Ich möchte über mehrere Datenbanken in SQL Server abfragen, also dachte ich, ich könnte eine Variable namens @DBNAME erstellen und sie an eine Abfrage übergeben wie folgt (aber es tut nicht arbeite nicht).Übergeben Sie eine Variable an den vollständig qualifizierten Namen als Datenbank in einer SQL-Abfrage
Dies wird innerhalb einer Schleife sein, wo DBNAME als Zählung auf Dbid durchlaufen wird. Meine Anzahl funktioniert und es @DBNAME als alle Produktionsdatenbanken ausgibt .. aber ich kann es nicht zu Abfrage über mehrere bekommen Datenbanken!
IF EXISTS (SELECT 1 FROM @
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'Dataarea' DBNAME.INFORMATION_SCHEMA.TABLES) SELECT 'GETIN' AS ELSE res SELECT 'aaargh' AS res - -SELECT * Aus DataArea AS res ELSE SELECT NULL AS res;
Danke für die Hilfe. Ich habe Folgendes als meine @ script-Variable deklariert: Wählen Sie @script = "SELECT 1 FROM '+ @DBNAME +'." + @tablename + 'WHERE TABLE_TYPE =' BASE TABLE‘AND TABLE_NAME = 'Dataarea'“ Ich denke, es ist mit dieser in Ordnung, aber wenn die folgenden hinzufügen, es nicht wie die exec IF exec sp_executesql @script VORHANDEN es sagt Msg 156, Ebene 15, Status 1, Zeile 20 Falsche Syntax in der Nähe des Schlüsselwortes 'exec'. –
Anstatt exec ... wählen Sie @script und Sie werden das endgültige Skript sehen, dass SQL versuchen und – u07ch
verarbeiten wird Es ist nicht: Ungültiger Spaltenname 'SELECT 1 FROM' + @DBNAME + '.' + @tabellenname + 'WHERE TABLE_TYPE =' BASE TABLE 'und TABLE_NAME =' DataArea ''. –