none
MSSQL Tabellenwerte kopieren über zwei Instanzen RRS feed

  • Frage

  • Hallo,

    auf meinem SQL-Server habe ich zwei eigenständige Instanzen eingerichtet diese auch für unterschiedliche Applikationen arbeiten. Ein paar Tabellen incl. Daten sind auf beiden Instanzen gleich.

    Damit ich die Daten nicht doppelt pflegen muss, würde ich gerne den Inhalt der Tabellen von der Instanz1 auf die Instanz2 kopieren. Aktuell arbeite ich mit Export und Import - aber dies sind mir zu viele einzelne Schritte. Kann ich dieses Kopieren nicht über ein einfaches Skript im "Microsoft SQL Server Management Studio 18" durchführen. Wenn ich mich auf der gleichen Instanz bewegen würde, klappt es problemlos mit diesem Skript:

    Use Datenbank1
    
    INSERT INTO tblMeineTabelle ( Vorname, Familienname )
    SELECT Vorname, Familienname
    FROM tblMeineTabelle_Daten;

    aber ich habe zwei unterschiedliche Instanzen auf einem SQL-Server.

    Wer hat einen Tipp für mich.

    Danke

    Freitag, 20. August 2021 06:54

Antworten

  • Hi,

    leg dir einen Verbindungsserver auf die zweite Instanz an, dann kannst Du das bspw. so machen:

    INSERT INTO <Verbindungsserver>.<Datenbank>.<Schema>.tblMeineTabelle ( Vorname, Familienname )
    SELECT Vorname, Familienname
    FROM   tblMeineTabelle_Daten;


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    • Als Antwort vorgeschlagen Christoph Muthmann Freitag, 20. August 2021 07:54
    • Als Antwort markiert sbrand Montag, 23. August 2021 20:29
    Freitag, 20. August 2021 07:21
    Moderator

Alle Antworten

  • Hi,

    leg dir einen Verbindungsserver auf die zweite Instanz an, dann kannst Du das bspw. so machen:

    INSERT INTO <Verbindungsserver>.<Datenbank>.<Schema>.tblMeineTabelle ( Vorname, Familienname )
    SELECT Vorname, Familienname
    FROM   tblMeineTabelle_Daten;


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    • Als Antwort vorgeschlagen Christoph Muthmann Freitag, 20. August 2021 07:54
    • Als Antwort markiert sbrand Montag, 23. August 2021 20:29
    Freitag, 20. August 2021 07:21
    Moderator
  • Du kannst via erwähntem Verbindungsserver auch die andere Richtung nehmen.

    Insert into Schema.MyTable
    Select * from VerbServer.DB.Schema.MyTable

    oder noch dynamischer

    Insert into Schema.MyTable
    Select * from OpenQuery(VerbServer, 'select * from schema.mytable')

    Je nach Häufigkeit der Zugriffe auf diese Tabelle (Joins o.ä.) kannst du statt dessen auch eine View erstellen.

    Create View Schema.MyTable as (
    Select * from OpenQuery(VerbServer, 'select * from schema.mytable')
    )

    Es gibt halt, wie immer, nicht nur 1 Lösung.

    Freitag, 20. August 2021 08:10
  • Hallo,

    der Tipp mit dem Verbindungsserver war genial - Danke.

    Ich lerne doch immer noch dazu.

    Gruß

    Montag, 23. August 2021 20:30