none
SQL Tabelle von einer Datenbank zur anderen kopieren RRS feed

  • Frage

  • Hallo Community,


    ich habe eine kurze Frage.

    Ist es Möglich eine SQL Tabelle von einer Datenbank zu einer anderen zu kopieren.
    Per Skript oder ähnliches, nach dem die SQL Tabelle kopiert wurde, sollen zu einem späteren Zeitpunk nur noch die Tabellenreihen die sich geändert haben von der Quelldatenbank zur Zieldatenbank kopiert werden.
    Später sollen dann nur noch von dem Quellserver Reihen kopiert werden die nicht auf dem Zielserver  vorhanden sind, die Reihe besitzt einen Primary Key und heisst zv: KFZid
    Quellserver: SQl Server 2005
    Zielserver: SQL Server 2000

    Wie realisiert man sowas am einfachsten ?

    Viele Danke
    PS: ich wusste nicht genau in welchen Bereich das gehört, habe es jetzt in beiden gepostet.



    Donnerstag, 7. April 2011 11:55

Antworten

  • Hallo,

     

    für alle vielleicht die diesen Thread irgendwann lesen sollten,

    ich habe den LinkedServer händisch eingetragen unter--> Server Objects --> Linked Server

    es sollte dadrauf geachtet werden das Servername\Instance eingetragen wird.

     

     

    Montag, 11. April 2011 07:36

Alle Antworten

  • 1. Am einfachsten (Voraussetzung die Datenbanken kennen sich)

    Urladung:       select * into tabelleZiel from TabelleQuelle

    Delta:              a) Live: Mit einem Trigger alle Änderungen nachfahren

                           b) definiterter Zeitpunkt: anhand eines Änderungsdatum

      2. Replikation

     


    Donnerstag, 7. April 2011 12:29
  • Hallo,

     

    kann man unter SQL Server Management Studio der zweiten Server eintragen bzw registrieren ?

     

    grüße

    Donnerstag, 7. April 2011 12:44
  • Hallo,

     

    ich bin auf folgenden Artikel gestoßen...http://msdn.microsoft.com/de-de/library/ms187072.aspx

    ich verstehe nur nicht wie ich zu diesen Tools komme oder wo ich die Befehle ausführen kann.

     

    Grüß

    Donnerstag, 7. April 2011 16:21
  • Hallo Ruffy,

    ich habe zufällig im SQL-Server Management Studio so eine Funktion gefunden. Dort gibt es einen Assistenten, der ein Integration-Service-Project automatisch erstellt, ausführt und nach Gebrauch wieder löscht. Dazu rechts auf die Quelldatenbank klicken, dann "Tasks" -> "Export Data..." -> und im Assistenten die Tabelle(n) aussuchen, die man kopieren möchte.

    Das hilft dir aber nur beim ersten Job. Die anderen Integration-Service-Projekte musst du dann wohl selber mit Visual Studio erstellen.

    Gruß

    Alexander

    Donnerstag, 7. April 2011 17:10
  • Hallo,

     kann man unter SQL Server Management Studio der zweiten Server eintragen bzw registrieren ?

     grüße

    sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]

         [ , [ @provider= ] 'provider_name' ]

         [ , [ @datasrc= ] 'data_source' ]

         [ , [ @location= ] 'location' ]

         [ , [ @provstr= ] 'provider_string' ]

         [ , [ @catalog= ] 'catalog' ]


    Freitag, 8. April 2011 07:27
  • Hallo,

    ich bin auf folgenden Artikel gestoßen...http://msdn.microsoft.com/de-de/library/ms187072.aspx
    ich verstehe nur nicht wie ich zu diesen Tools komme oder wo ich die Befehle ausführen kann.

    Grüß

    Das hilft dir nur für die Urladung. Mit Hilfe des Contextmenüs einer Datenbank über Tasks – Daten importieren kannst du dir ein Batch erstellen lassen mit dem du Datenbank importieren bzw. gleich wieder exportieren kannst. Dieses Batch kannst du entweder gleich ausführen oder speichern und zu einem späteren Zeitpunkt ausführen. So eine Vorlage gibt es aber für die Deltaerstellung nicht.

    Hier musst du – wie bereits geschrieben - entweder mit einer Replikation arbeiten oder mit Hilfe von irgendwelchen Kriterien feststellen dass sich was geändert hat und die entsprechenden Änderungen nachfahren.

    Es gibt keinen Königsweg

    1. Stehen die Server an verschiedenen Standorten, kennen sich die DB-Server ?
    Dann ist die Replikation deine Wahl.

    2. Soll die zweite Datenbank live upgedatet werden?
    Dann ist der Trigger deine Wahl.

    3. Soll die zweite Datenbank einmal am Tag nachgefahren werden?
    Dann gibt es mehrere Wege:
    a) Trigger mit den Änderungen in einen Hilfstabelle des ersten Servers und dann Abgleich dieser Tabelle mit der Zieltabelle.
    b) Anhand eines Änderungsdatums in der ersten Tabelle Abgleich mit der Zieltabelle
    c) Replikation


    Freitag, 8. April 2011 07:43

  • Hallo,

    ich bin auf folgenden Artikel gestoßen...http://msdn.microsoft.com/de-de/library/ms187072.aspx
    ich verstehe nur nicht wie ich zu diesen Tools komme oder wo ich die Befehle ausführen kann.

    Grüß

    Das hilft dir nur für die Urladung. Mit Hilfe des Contextmenüs einer Datenbank über Tasks – Daten importieren kannst du dir ein Batch erstellen lassen mit dem du Datenbank importieren bzw. gleich wieder exportieren kannst. Dieses Batch kannst du entweder gleich ausführen oder speichern und zu einem späteren Zeitpunkt ausführen. So eine Vorlage gibt es aber für die Deltaerstellung nicht.

    Hier musst du – wie bereits geschrieben - entweder mit einer Replikation arbeiten oder mit Hilfe von irgendwelchen Kriterien feststellen dass sich was geändert hat und die entsprechenden Änderungen nachfahren.

    Es gibt keinen Königsweg



    1. Stehen die Server an verschiedenen Standorten, kennen sich die DB-Server ?
    Dann ist die Replikation deine Wahl

    2. Soll die zweite Datenbank live upgedatet werden?
    Dann ist der Trigger deine Wahl.

    3. Soll die zweite Datenbank einmal am Tag nachgefahren werden?
    Dann gibt es mehrere Wege:
    a) Trigger mit den Änderungen in einen Hilfstabelle des ersten Servers und dann Abgleich dieser Tabelle mit der Zieltabelle.
    b) Anhand eines Änderungsdatums in der ersten Tabelle Abgleich mit der Zieltabelle
    c) Replikation


    Vielen Dank für deine ausführliche Antwort.

     

    zu 1 : die Server stehen unter verschiedenen Standorten , kennen Sich die DB-Server?

    Ja , sie stehen an verschiedenen Standorten, mit kennen meinst du ob jeweils eine Verbindung dort hin besteht oder ob er als Linkedserver eingetragen ist ? Eine Verbindung dort hin besteht, aber als Linkedserver ist er noch nicht eingerichtet.

    Wenn man dort eine Replikation einrichtet, kann man dort auch nur "eine" Tabelle replizieren ? zb. dbo.sqlkfzid ?

    Wie ist der Intervall der replikationen.

     

    Ich dachte mir das ich eine kleines Script schreibe in den mit Management Studio auf dem Quellserver ausführe wo er einfach die Tabellenreihe kfzid vergleich und die auf dem Tielserver nicht vorhandenen id's überträgt.

     

    Vielen Dank

    Freitag, 8. April 2011 08:34
  • Wenn es keine Updates und Delets gibt sondern nur Inserts vereinfacht sich das ganze Prozedere natürlich. Aber meistens (zumindest bei uns) ist alles doch ein wenig komplizierter.


    Freitag, 8. April 2011 08:47
  • Hallo,

     

    ich habe jetzt unter meinem SQL Server 2005 eine zweite datenbank erstellt um einfach die vorgehensweise zu verstehen.

    Ich habe nun 2 Datenbanken und habe folgende Query erstellt :

    use test;

    go

    insert into test.dbo.info (jobid) select test2.dbo.info.jobid from test2.dbo.info where jobid != jobid

     

    durch diese Query werden jobid  daten von der Datenbank test2 in die datenbank test kopiert und vergliechen ob die jobid nicht in der anderen vorhanden ist.

    Wie kann ich jetzt einen Server bzw eine Datenbank ansprechen die auf einem anderen Server liegt ?

     

     

     

     

    Freitag, 8. April 2011 10:23
  • insert into test.dbo.info (jobid) select servername.test2.dbo.info.jobid from test2.dbo.info where jobid != jobid

    Freitag, 8. April 2011 11:08
  • Hallo Praktikant :)

     

    habe jetzt den Linkedserver hinzugefügt und wenn ich den Befehl Select * from sys.server abfrage ist er auch dort vorhanden.

     

    was aber jetzt mein Problem ist, der server heisst de-test-s-001.

     

    Wenn ich nun der server heisst de-test-s-001.test2.dbo.info eingebe , spuckt er mir folgende Fehlermeldung aus:

     

    incorrect Syntax near '-'

     

     

     

    Freitag, 8. April 2011 11:35
  • Entweder mit [de-test-s-001]..test2.dbo.info

    Oder

    Einfach im LinkedServer den Alias De_Test_s_001 verwenden. ( select * from De_Test_s_001.test2.dbo.info )



    Freitag, 8. April 2011 11:47
  • hallo,

     

    jetzt bekomme ich folgende Meldung: OLE DB prvider SQLNCLI for linked server de-test-s-001 returened message 'invalid  connection string attribute'

    cannot initialize the data source objekt of OLE DB provider SQLNCLI for linked server de-test-s-001

     

    Ich habe folgende syntax verwender bei hinzufügen

    sp_addlinkedserver 'de-test-s-001', '',, 'SQLNCLI', NULL, NULL, '192.168.1.1', NULL;

     

    PS: der Zielserver ist ein SQL Server 2008 und der Quellserver ist 2005

     


    Freitag, 8. April 2011 12:12
  • Hallo,

     

    für alle vielleicht die diesen Thread irgendwann lesen sollten,

    ich habe den LinkedServer händisch eingetragen unter--> Server Objects --> Linked Server

    es sollte dadrauf geachtet werden das Servername\Instance eingetragen wird.

     

     

    Montag, 11. April 2011 07:36