Ich möchte den Datenbanknamen in gespeicherten Prozeduren/Sichten dynamisch ändern können.Den Datenbanknamen dynamisch in der gespeicherten Prozedur festlegen
Beispiel:
SELECT USER_FNM
FROM MYBASE_01.DBO.USERS
Ich möchte MYBASE_01
dynamisch haben, vielleicht in einigen Variablen gespeichert. Ist das möglich?
Mein Grund dafür ist, ich habe viele Ansichten, wo Datenbankname enthalten ist. Beim Deployment muss ich diesen Namen in jeder Ansicht ändern. Es wäre viel einfacher, wenn der Name einer Datenbank nur in einer Variablen gespeichert werden kann, so dass diese nicht für alle Ansichten geändert werden muss.
Sie können eine dynamische SQL-Zeichenfolge ausführen, in der Sie in Ihrem Namen eine Zeichenfolgevariable verwenden. Sie würden Ihre Abfrage in eine 'EXEC() 'einbetten. – EMUEVIL
Für gespeicherte Prozeduren könnten Sie dynamische SQL nutzen (obwohl das ein Zeichen dafür ist, dass etwas nicht ideal entworfen ist), aber Ihre Ansichten stecken Sie fest. Sie können dynamische Sqls oder Variablen in Sichten nicht verwenden. –
Klingt mehr nach einem Fall für SQLCMD-Variablen in Ihrem Bereitstellungsskript ('$ (database)'). Wollen Sie wirklich die Datenbank um * runtime * ändern? Wenn dies der Fall ist, ist es viel sinnvoller, eine 'USE db' auf Ihrer Verbindung von der Client-Software zu erstellen. Wenn die Anzahl der Objekte, auf die Sie auf diese Weise zugreifen, begrenzt ist, sollten Sie ['CREATE SYNONYM'] (https://docs.microsoft.com/sql/t-sql/statements/create-synonym-transact-sql) als Alias verwenden transparent. –