Avatar billede celal Nybegynder
10. december 2008 - 10:30 Der er 12 kommentarer og
1 løsning

Overføre data fra access til MSSQL via T-SQL?

Jeg har en større applikation udviklet i Access, denne er nu splittet op, så interfacet køre på Access og databasen køre på MSSQL med en ODBC tabelsammenkædning i Access. Men i udviklings miljøet opretter jeg stadig tabeller og felter i Access, dvs. i udviklings miljøet ligger tabellerne lokalt i Access, og ved produktion bliver disse eksporteret til MSSQL, og tabellerne laves automatisk om til tabel sammenkædning.

Jeg er nu begyndt at få svært ved at holde styr på hvilken tabeller og felter det er oprettet i de forskellige program versioner. Når en bruger vil opdatere fra eks. version 9.8 til 11.2 bliver de nye tabeller og felter oprettet manuelt, og det begynder at blive svært at holde styr. Ved ny installation er der ikke noget problem, da jeg bare eksportere hele databasen fra Access over til MSSQL ved brug af Access Upsizing, men har problemer med at holde styr på det ved opdateringer.

Jeg har tænkt mig at benytte mig af T-SQL, men er der nogen som ved om der er allerede findes noget i Access eller eksterne programmer som kan udføre T-SQL scriptet, som også tjekker op på om tabellen og felterne allerede eksistere, så selve version opdateringen kan gøres smerte frit ved at køre scriptet på MSSQL serveren

I må i øvrigt også gerne komme med nogle gode ideer til at løse det på andre måder, end den måde jeg gøre eller har tænk mig at gøre. Grunden til at jeg p.t stadig er har tabellerne liggende lokalt  i udviklingsmiljøet, er fordi det er hurtigere at oprette nye tabeller og felter, men det er måske tid til at ændre arbejdes vane?
Avatar billede mireigi Novice
10. december 2008 - 10:43 #1
Du kan bruge den indbyggede Data Import i SQL Server.

1. Opret en database
2. Højreklik på databasen
3. Vælg Tasks
4. Vælg Import Data
5. Følg guiden
Avatar billede terry Ekspert
10. december 2008 - 12:26 #2
An idea would be to drop Access as th ebackend and have an SQL server dB for development. Then its very simple to sychronize the dBs using Red Gates SQL tools http://www.red-gate.com/products/SQL_Compare/index.htm
Avatar billede terry Ekspert
16. december 2008 - 20:30 #3
status please?
Avatar billede celal Nybegynder
16. december 2008 - 20:31 #4
Terry: Så du menner det vil være bedst, at udvikle med ved at bruge MSSQL under udviklingen. Hvad med de brugere som allrede køre på access versionen?
Avatar billede mireigi Novice
17. december 2008 - 00:34 #5
De brugere kan du importere til MSSQL Databasen jf. min første kommentar. Det eneste du skal ændre i programmet/-erne er din connection string så den henviser til MSSQL Databasen.
Avatar billede terry Ekspert
17. december 2008 - 09:44 #6
What do you mean ".. Hvad med de brugere som allrede køre på access versionen?"? do you have users who have a version which is ONLY Access (backend+frontend)? This isnt clear in your question. In effect, your saying that the same version can be data in Access and data in SQL?

Maybe more info would help.


>>mireigi: Would this also take into account changes to table design?
Avatar billede mireigi Novice
17. december 2008 - 11:15 #7
#terry:

Seeing as the MSSQL Data Import maps the Access Tables to their MSSQL equivelant, provided no table(s) with the same name already exists, there should be no problem. I am currently working as a web-developer, and over the past 6 months we have been using the mentioned method for Access > MSSQL transition with no problems so far. Only problem that might be of concern, is when you enforce ID-inserts in the Import Guide - this will remove the Auto-Increment of the ID column. This is, however, a small price to pay compared to manual data import.

If I misunderstood your qeustion, please elaborate :)

MiReiGi
Avatar billede terry Ekspert
17. december 2008 - 12:20 #8
"..provided no table(s) with the same name already exists, there should be no problem."

Maybe I have misunderstood the original question but doesn celal also want to modify tables. IE if a change (new field for example) is made in the Access table then the new field must also be created on the SQL table.
Avatar billede mireigi Novice
17. december 2008 - 15:47 #9
If he doesn't remove any fields from the Access table prior to importing the data, he can tick off the option "Drop target table before inserting", which will recreate the target table.

I have never been in a situation where I had to extend a table with additional fields, although I am sure there is such a feature in the guide.

The optimal solution would be to copy all data from both tables into an excel sheet and modify the layout as needed. Then import the data to MSSQL and dropping the target table prior to insert. Finally change the connection string of the program to match the requirements of MSSQL.
Avatar billede terry Ekspert
17. december 2008 - 19:40 #10
Quite often its necessary to add fields to tables and also change the data type but I wouldnt think it a good idea to drop an existing table which contains data.

The link to Red Gate SQl Compare can compare two databases and create all SQL scripts necessary to synchronise the two dB's both design and data also.

I have no idea if SQL 2005/2008 or what ever versions are current but 2000 couldnt do that without a lot of work.
Avatar billede celal Nybegynder
05. januar 2009 - 19:17 #11
Har været på ferie sorry, for den sene tilbagemelding. Terry, dem som har den gamle version køre stadig på acces databasen, men de dem som får den nye installation vil køre på MSSQL. Men på et tidspunkt vil dem med den gamle version gerne over på den nyeversion med MSQL. Her skal der konverteres noget data som allrede ligger i den gamle access, som skal over i den nye MSSQL, som til den tid har fået nogle flere tabeller og felter.
Avatar billede celal Nybegynder
05. januar 2009 - 19:22 #12
Vil den bedste løsning ikke være at jeg først konvertere Access over til MSSQL (måske ved brug af Access Upsizing Wizard), og derefter bruge Red Gates SQL tools, til at synkronisere de nye tabeller og felter?
Avatar billede terry Ekspert
06. januar 2009 - 16:57 #13
"Vil den bedste løsning ikke være at jeg først konvertere Access over til MSSQL (måske ved brug af Access Upsizing Wizard), og derefter bruge Red Gates SQL tools, til at synkronisere de nye tabeller og felter?"

That sounds like a goode idea.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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