In Prozedur andere Datenbanktabelle füllen?

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