[SQL] data kopieren van dbserver naar andere dbserver

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • 107mb
  • Registratie: Juni 2004
  • Laatst online: 15:54
Voor een nieuwe web-applicatie hebben wij een Acceptatie en Productie server.
Een collega heeft handmatig de gehele product-tabel aangepast (omschrijvingen e.d.). behoorlijk wat werk (denk aan dagen). Nu heeft hij per ongeluk de acceptatie server in plaats van de productieserver aangepast.

Vervolgens heb ik het verzoek gekregen om de gegevens van A naar P te updaten.

een aantal opties die ik heb overwogen.
A.table --> export naar xls
P.table --> import

met de volgende functie:
SQL:
1
2
3
4
5
6
7
UPDATE pd
SET pd.Name_nl = y.Name_nl
FROM db.dbo.table pd INNER JOIN
(
SELECT [Id], [Name_nl]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;IMEX=1;Database=c:\temp\import.xls;', 'SELECT * FROM [Blad1$]')) y
ON pd.Id = y.Id


ik krijg de volgende melding:
Msg 7302, Level 16, State 1, Line 1
Cannot create an instance of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".

het kan te maken hebben met het feit dat er op de DB server geen Excel is geinstalleerd. Dat gaat ook niet gebeuren.

met de dataimport task lijkt het niet goed te gaan omdat ik speciefiek een kolom wil overschrijven.

Het liefst zou ik een update query schrijven, maar het lukt mij niet om van de ene db-server verbinding te maken met de andere db-server.

Wie heeft er tips?

Acties:
  • 0 Henk 'm!

  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 21:51

Rannasha

Does not compute.

Welke DB software gebruik je? Met SQL Server kun je een SSIS package maken dat de boel netjes kopieert van Server A naar Server P.

|| Vierkant voor Wiskunde ||


Acties:
  • 0 Henk 'm!

  • 107mb
  • Registratie: Juni 2004
  • Laatst online: 15:54
SQL server 2012 en lokaal SSMS 2012

Acties:
  • 0 Henk 'm!

  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 21:51

Rannasha

Does not compute.

Dan moet dat prima te doen zijn met SSIS. In Visual Studio kun je een nieuw Integration Services Project aanmaken en hier kun je allerlei logica inbouwen over hoe een dergelijke migratie moet verlopen.

Als je echter simpelweg de hele inhoud van de tabel op A wil kopieren naar P (dwz: er zijn geen gegevens uit de oorspronkelijke tabel op P nodig), dan kun je de tabel op P leegmaken en daarna in SSMS gewoon de data exporteren van A naar P (rechtermuis-klik op de DB-naam, Tasks -> Export Data...). Dit is sneller en eenvoudiger dan een eigen SSIS package maken, maar het is minder flexibel. Maar dat is voor deze toepassing waarschijnlijk geen issue.

|| Vierkant voor Wiskunde ||


Acties:
  • 0 Henk 'm!

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 16:56

markvt

Peppi Cola

Als je toch SQL Server 2012 hebt, kan je de servers tijdelijk aan elkaar linken met linked servers. Dan kan je gewoon queries zoals deze schrijven
code:
1
2
3
SELECT *
INTO [server1].[database1].[table1]
FROM [server2].[database1].[table1]


Voor de toekomst, als het een eenmalig probleem is kan je dit ook prima (en snel oplossen) met de tools "SQL Compare" en "SQL Data Compare" van red-gate.com (trial versie is hiervoor ruim voldoende)

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 26-06 00:23

ZaZ

Tweakers abonnee

Wat markvt zegt ^^

Ik heb zelfs regelmatig te maken met verschillende RDMS'en die met elkaar moeten babbelen.
Toevallig nog van de week een database link gemaakt tussen Oracle en MySQL.
Kan eigenlijk met elke wat grotere database vendor wel

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • HansvDr
  • Registratie: Augustus 2009
  • Niet online
Je oledb error heeft denk ik met schrijfrechten te maken.
Now, the simple explanation is this, when using a linked server (and the OPENROWSET is a sort of linked server) then a temporary DSN (Data Source Name) is created in the TEMP directory for the account that started the SQL Server service. This is typically an account that is an administrator on the machine.

However, the OLEDB provider will execute under the account that called it. This user can even be sysadmin on the SQL Server, but as long as this user is not an administrator on the machine, it will not have Write access to the TEMP directory for the SQL Server service account.
Zie: http://blogs.msdn.com/b/s...ge-unspecified-error.aspx

Wat ik zelf wel eens heb gehad is dat ik alleen 64 bit drivers had geïnstalleerd en juist de 32 bits versie nodig had (of omgekeerd).

Maar een Linked Server naar de andere DB lijkt mij het handigst. Dus niet via excel.


Wat je ook kunt doen, rechtermuisknop op database, tasks, generate script, kies de juiste tabel, advanced en kies: Types of data to script. Zet dit op Data only of Schema and Data. Je krijgt dan een serie insert scripts die je kunt gebruiken op db2.

[ Voor 23% gewijzigd door HansvDr op 07-11-2014 16:21 . Reden: Info toegevoegd ]

Pagina: 1