Ich versuche, ein altes Skript in einem Produktionsinstallationsprogramm zu aktualisieren, damit es sowohl mit Azure SQL als auch mit SQL funktioniert. Das Problem ist, dass unser Skript USE aufruft, um die Datenbank zu wechseln. Vor Ort erstellen wir die Datenbank, in Azure wird sie bereits für uns erstellt... also erkennen wir ihre Existenz und fahren fort. Allerdings fordern wir dort dann USE auf, für On-Prem zu wechseln.
Ich hatte gehofft, ich könnte es in Azure so überspringen
IF NOT SERVERPROPERTY('edition') = 'SQL Azure'
USE MYDB
Ich bekomme immer noch die Meldung "USE-Anweisung wird nicht unterstützt, um zwischen Datenbanken zu wechseln". Der Hack besteht darin, dies in eine Zeichenfolge zu packen und mit EXEC sp_executesql auszuführen
Dies funktioniert für die meisten Dinge, aber ich glaube nicht, dass es mit der USE-Anweisung funktioniert. Gibt es eine Möglichkeit, den Azure SQL-Parser diesen Abschnitt überspringen zu lassen, da er niemals ausgeführt wird?
Ich bin offen für SQL-basierte Problemumgehungen... aber ich versuche zu vermeiden, das Installationsprogramm neu zu gestalten.
Lösung des Problems
Die USE-Anweisung wird nicht unterstützt, um zwischen Datenbanken zu wechseln
In Azure SQL-Datenbank tritt dieser Fehler nur auf, wenn Sie versuchen, eine andere Datenbank zu „VERWENDEN".
In Azure SQL-Datenbank kann der Datenbankparameter nur auf die aktuelle Datenbank verweisen. Wenn eine andere Datenbank als die aktuelle Datenbank bereitgestellt wird, wechselt die USE-Anweisung nicht zwischen den Datenbanken und der Fehlercode 40508 wird zurückgegeben.
VERWENDUNG (Transact-SQL)
Ebenso sind dreiteilige Namen erlaubt, die auf die aktuelle Datenbank verweisen.
Keine Kommentare:
Kommentar veröffentlichen