Announcement

Collapse
No announcement yet.

Update in einer Anderen DB auf einem Anderen Server

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Update in einer Anderen DB auf einem Anderen Server

    Hallo,

    ich versuche einen Datensatz in einer Anderen DB auf einem Anderen Server upzudaten, Folgendes habe ich micht bis jetzt überlegt.

    DECLARE @wugserver AS varchar
    DECLARE @wugdb AS varchar
    DECLARE @wuguser AS varchar
    DECLARE @wugpass AS varchar
    DECLARE @maintenanceOn AS varchar
    DECLARE @maintenanceOff AS varchar

    SELECT @wugserver = WugServerIP FROM tab_Niederlassungen WHERE (tab_Niederlassungen.ID = inserted.NLID);
    SELECT @wugdb = WugDBName FROM tab_Niederlassungen WHERE (tab_Niederlassungen.ID = inserted.NLID);
    SELECT @wuguser = WugDBUser FROM tab_Niederlassungen WHERE (tab_Niederlassungen.ID = inserted.NLID);
    SELECT @wugpass = WugDBPass FROM tab_Niederlassungen WHERE (tab_Niederlassungen.ID = inserted.NLID);

    SET @maintenanceOn = 'UPDATE Device SET nWorstStateID = 4 ,nBestStateID = 4 ,bManualMaintenanceMode = 1 WHERE nDeviceID = '
    SET @maintenanceOff = 'UPDATE Device SET nWorstStateID = 5 ,nBestStateID = 5 ,bManualMaintenanceMode = 0 WHERE nDeviceID = '
    IF UPDATE(inserted.DSLStatus)
    BEGIN
    IF (inserted.nDeviceID is not null)
    BEGIN
    IF (@wugserver is not null)
    BEGIN
    IF (inserted.DSLStatus <> 4)
    BEGIN
    OPENROWSET('SQLOLEDB',' + @wugserver + ';' + @wuguser + ';' + @wugpass + ',@maintenanceOn + inserted.nDeviceID )
    END
    ELSE
    OPENROWSET('SQLOLEDB',' + @wugserver + ';' + @wuguser + ';' + @wugpass + ',@maintenanceOff + inserted.nDeviceID)
    END
    END
    END

    Das sind die Fehllermeldungen vom SQL Server.

    Msg 102, Level 15, State 1, Procedure T_tab_Filialliste_UTrig, Line 60
    Falsche Syntax in der Nähe von '.'.
    Msg 156, Level 15, State 1, Procedure T_tab_Filialliste_UTrig, Line 72
    Falsche Syntax in der Nähe des 'END'-Schlüsselwortes.
    Msg 102, Level 15, State 1, Procedure T_tab_Filialliste_UTrig, Line 74
    Falsche Syntax in der Nähe von 'END'.

    also was ich versuche ist auf Verschiedene in der DB deffinierten SQL Server zuzugreifen und dort einen Vorhandenen DS (nDeviceID) upzudaten abhänig vom gewählten Status in meiner DB (DSLStatus). Das ganze soll noch dazu ein trigger werden. gelöst habe ich das bisher mit VBA im Frontend das möchte ich jetzt aber dem SQL server überlassen. Oder gibt es die möglichkeit in einem Trigger auch VBscripte laufen zu lassen?


    Vielen Dank für eure hilfe.

  • #2
    Hallo Tigger,

    wenn ich mir das in den Query Analyzer kopiere, sehe ich sofort, das 2 abschließende Hochkommas fehlen, und zwar nach inserted.nDeviceID'

    Dann weiter:
    1. Inserted ist eine virtuelle Tabelle, die man auch als solche behandeln sollte. Eine einfaches inserted.DSLStatus geht nicht, ist ja kein Objekt.
    => SELECT DSLStatus FROM inserted
    2. In inserted können 0 - n Datensätze stehen, das solltest Du auch beachten
    3. Wenn das bereinigt ist, ersetz mal OPENROWSET durch PRINT, um dDir das Statement ausgeben zu lassen.

    Tipp: Man kann andere SQL Server als LINKED SERVER einrichten.
    Der Zugriff ist dann wesentlich einfacher, z.B. über

    SELECT *
    FROM [ServerName].[Datenbank].[Schema].[Tabelle]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment

    Working...
    X