Avatar billede dkkarpen Nybegynder
28. marts 2003 - 10:03 Der er 19 kommentarer og
1 løsning

Eksporter til Access

Halløj

Jeg har brug for at eksportere en tabel fra MS SQL 2000 til Access 2000 dagligt. Jeg har rpøvet at sætte en DTS op men den afvikles ikke automatisk. Hvis jeg manuelt afvikler den skriver den desuden de samme data som findes i forvejen i Access db'en. Nogen forslag til hvordan jeg får det til at køre automatisk og hvordan jeg undgår dubletter?
Avatar billede arne_v Ekspert
28. marts 2003 - 16:40 #1
Kryb til korset og lave en lille utility i dit yndlings
programmerings-sprog C/C++/C#/VB/Delphi/Java/whatever
som læser fra SQLServer og skriver til Access.

Det sætter du så bare en scheduler til at køre en gang i døgnet.
Avatar billede pierrehusted Nybegynder
01. april 2003 - 12:00 #2
Hvis tabellen kortvarigt må være tom, så vil jeg foreslå at du gør følgende i DTS pakken :


(på Access database connection)
Truncate table [tabelnavn]

og så en Transform Data Task der overfører dataene fra SQL-Serveren til Access databasen.


Når pakken er færdig sætter du den til at køre ved at lave et Schedule der kører den på det rigtige tidspunkt.
Avatar billede dkkarpen Nybegynder
03. april 2003 - 09:12 #3
pierrehusted>>Jeg har fedtet lidt rundt med en transform data mask uden held... Var det muligt du gav et eksempel? Så smider jeg lidt ekstra points efter dig ;-)
Avatar billede pierrehusted Nybegynder
03. april 2003 - 09:24 #4
Øhm... Det er lidt svært at vise hvordan man laver en DTS pakke i ren tekst.


Du laver først en tom DTS pakke.

Indsætter en database connection til Access databasen og en til SQL databasen.

Så laver du en ny database connection, som er en kopi af forbindelsen til Access databasen.

Så laver du en Execute SQL task på den første Access connection hvori du udfører SQL-sætningen "Truncate Table [tabelnavn]".

Så laver du en Transform Data Task fra den anden Access connection til SQL-server connectionen. Deri overfører du dataene.

Og til sidst en workflow pil fra Execute SQL task til den anden Access connection.


Men som sagt er det ret svært at skrive hvordan man laver en DTS pakke.
Avatar billede dkkarpen Nybegynder
03. april 2003 - 09:31 #5
Jeg tænker bare på SQL syntaxen på transform data task.
Avatar billede dkkarpen Nybegynder
03. april 2003 - 09:35 #6
Sådan her eller?

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Principielle]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Principielle]
GO

CREATE TABLE [dbo].[Principielle] (
    [PrincipID] [int] IDENTITY (1, 1) NOT NULL ,
    [KontorID] [int] NULL ,
    [Journalnr] [nvarchar] (250) COLLATE Danish_Norwegian_CI_AS NULL ,
    [Bilagsnr] [int] NULL ,
    [dato] [datetime] NULL ,
    [Titel] [nvarchar] (255) COLLATE Danish_Norwegian_CI_AS NULL ,
    [Tekst] [ntext] COLLATE Danish_Norwegian_CI_AS NULL ,
    [Lov] [nvarchar] (255) COLLATE Danish_Norwegian_CI_AS NULL ,
    [Instans] [nvarchar] (255) COLLATE Danish_Norwegian_CI_AS NULL ,
    [Emneord] [ntext] COLLATE Danish_Norwegian_CI_AS NULL ,
    [Paragraf] [nvarchar] (255) COLLATE Danish_Norwegian_CI_AS NULL ,
    [Interessant] [bit] NULL ,
    [Oprettet] [datetime] NULL ,
    [Opretter] [nvarchar] (50) COLLATE Danish_Norwegian_CI_AS NULL ,
    [Aargang] [int] NULL ,
    [Arkiv] [bit] NULL ,
    [Publiceret] [bit] NULL ,
    [Antaget] [bit] NULL ,
    [Afvist] [bit] NULL ,
    [SM] [bit] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Avatar billede pierrehusted Nybegynder
03. april 2003 - 09:40 #7
Hvorfor vil du lave tabellen igen ??  TRUNCATE TABLE tømmer bare indholdet ud af den, så selve tabellen er der stadig.

Jeg er ikke helt med...
Avatar billede dkkarpen Nybegynder
03. april 2003 - 09:52 #8
Det vil jeg heller ikke. Jeg har bare ikke clue til hvordan jeg skal strikke koden sammen...
Avatar billede pierrehusted Nybegynder
03. april 2003 - 09:55 #9
DTS pakken laver du via et grafisk interface i Enterprise Manager. Der skal stort set ingen kodning til.
Avatar billede dkkarpen Nybegynder
03. april 2003 - 10:03 #10
Ok nu har jeg gjort som du har beskrevet. Men jeg kan ikke få lov til at lave en workflow pil. Se her for mere info http://www.dsa.dk/sql.jpg
Avatar billede pierrehusted Nybegynder
03. april 2003 - 10:05 #11
Klik på "Execute SQL task" først.
Hold CTRL nede og klik på SQL-server connection.
Klik på menupunkt "Workflow" og vælg "On Success"

Hjalp det ??
Avatar billede dkkarpen Nybegynder
03. april 2003 - 10:07 #12
Ahhh - det var bedre. Men den vil ikke køre "Truncate Table [principielle]"
Avatar billede pierrehusted Nybegynder
03. april 2003 - 10:08 #13
Fjern [] omkring tabelnavnet.
Avatar billede dkkarpen Nybegynder
03. april 2003 - 10:19 #14
Same thing. Der er en ugyldig SQL-sætning. "Delete", "Insert", "Procedure", "Select" eller "Update" var ventet.
Avatar billede pierrehusted Nybegynder
03. april 2003 - 10:21 #15
Hmm...  det må være fordi Access ikke kan Truncate. Det vidste jeg godt nok ikke.

Nå men så prøv en ganske almindelig :

Delete from principielle
Avatar billede dkkarpen Nybegynder
03. april 2003 - 10:22 #16
Jeg kører bare en Delete from table i stedet. Men nu er der fejl i min tranformation data task
Avatar billede dkkarpen Nybegynder
03. april 2003 - 10:24 #17
The number of failing rows exceeds the maximum specified. Feltet "Principielle.principID" kan ikke indeholde en Null-værdi, fordi egenskaben Required til dette felt er angivet til True. Indtast en værdi til dette felt.
Avatar billede dkkarpen Nybegynder
03. april 2003 - 10:28 #18
Så lykkedes det. Skal man virkelig sætte en TRANSFORMATION OP FOR HVERT FELT?
Avatar billede pierrehusted Nybegynder
03. april 2003 - 10:31 #19
Du mangler nok at sætte IDENTITY INSERT til under options (det mener jeg i hvert fald den hedder).

Nej, du kan have masser af felter med i hver Transform.
Avatar billede dkkarpen Nybegynder
03. april 2003 - 10:31 #20
Ok - fedt! Tak for hjælpen ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester