Guten Tag zusammen!
Ich habe ein Problem. ICh möchte von einer Prozedur aus, eine Tabelle ergänzen, die jedoch nicht in der gleichen DB liegt. Dies Funktioniert ja eigentlich ganz einfach:
Update [DBnamen].[dbo].[Tabellennamen]
SET on=‚1‘
WHERE Parameter=‚Maschine‘
Jetzt möchte ich aber den DBnamen mit einer Variablen ersetzen wie z.B. so
Update [@DBnamen].[dbo].[Tabellennamen]
Das funktioniert leider nicht da er @DBnamen nicht als Variable sondern als Datenbanknamen erkennt…
ICh hoffe ihr könnt mir helfen vielen dank.
Freundliche Grüsse
SickBoom
Hallo,
dafür muss man dynamisches SQL verwenden.
Zum Beispiel:
DECLARE @DBName AS nvarchar(4000)
SET @DBName = ‚[PostOffice]‘
exec ('SELECT top 10 * FROM ’ + @DBName + ‚.dbo.Tabellenname‘)
Grüße
Vielen dank für deine Antwort werde es gleich ausprobieren und bescheidsagen, ob es geklappt hat.
Freundliche Grüsse SickBoom
Ich habe es nun versucht bin jedoch fehlgeschlagen…
DECLARE @DBName AS nvarchar(4000)
SET @DBName = ‚[WA1003_FitBatchSystem]‘
exec ('SELECT top 10 * FROM ’ + @DBName + ‚.dbo.Tabellenname‘)
so und so
DECLARE @DBName AS nvarchar(4000)
SET @DBName = ‚[‘+@name+’]’
exec ('SELECT top 10 * FROM ’ + @DBName + ‚.dbo.Tabellenname‘)
bekomme ich den gleichen fehler der lautet:
Meldung 208, Ebene 16, Status 1, Zeile 1
Ungültiger Objektname ‚WA1003_FitBatchSystem.dbo.Tabellenname‘.
können Sie mir da vilt nochmals helfen?
Sorry erst überlegen dann schreiben… habe nicht gesehen das noch Tabellenname als Tabelle angegeben war.^^
habe jedoch nochmals n Fehler gefunden wenn ich diesen Code hier ausführe:
@name enthält den Namen der DB
SEttings ist die Tabelle
ParamValue und Parameter sind die zwei spalten der Tabelle
DECLARE @DBName AS nvarchar(4000)
SET @DBName = ‚[‘+@name+’]’
exec ('Update ’ + @DBName + ‚.dbo.Settings ’ +
’ SET ParamValue = „1“ ’ +
’ Where Parameter = „CheckedOut“‘
)
gibt es diese Fehlermeldung zurück:
Meldung 207, Ebene 16, Status 1, Zeile 1
Ungültiger Spaltenname ‚CheckedOut‘.
So hab es lösen können. Es müssen anstadt die doppelten Anführungszeichen zwei einfache Anführungszeichen eingesetzt werden:
DECLARE @DBName AS nvarchar(4000)
SET @DBName = ‚[‘+@name+’]’
exec ('Update ’ + @DBName + ‚.dbo.Settings ’ +
’ SET ParamValue = ‚‚1‘‘ ’ +
’ Where Parameter = ‚‚CheckedOut‘‘‘
)
Funktioniert einwandfrei so!
(gefunden unter)
http://support.microsoft.com/kb/222664/de
vielen dank nochmals für den beitrag an tornados!!!
Freundliche Grüsse SickBoom