1
我有第一個數據庫上運行的腳本,但我想在其他數據庫上創建模式。 具體來說,我運行此腳本:在其他數據庫中創建模式
DECLARE @USE_TEMPLATE VARCHAR(MAX) SET @USE_TEMPLATE = 'USE
[{DBNAME}]'
DECLARE @DatabaseName nvarchar(50); DECLARE @HistDatabaseName
nvarchar(50);
SET @DatabaseName = DB_NAME(); SET @HistDatabaseName = @DatabaseName +
N'_Audit'
DECLARE @SQL_SCRIPT VARCHAR(MAX)
SET @SQL_SCRIPT = REPLACE(@USE_TEMPLATE, '{DBNAME}',
@HistDatabaseName) EXECUTE (@SQL_SCRIPT)
DECLARE @schemaTSQL varchar(100) = 'CREATE SCHEMA [newschema]
AUTHORIZATION [dbo];' EXECUTE (@schemaTSQL);
如果我硬編碼的數據庫名稱它的工作原理,但我想在EF遷移中很少使用這個腳本。例如,這工作:
USE [SecondDatabase]
DECLARE @schemaTSQL varchar(100) = 'CREATE SCHEMA [newschema]
AUTHORIZATION [dbo];' EXECUTE (@schemaTSQL);
我不認爲這是可以做到。 CREATE SCHEMA必須是批處理中的第一條語句。通過'EXECUTE'執行的每個批次都有自己的範圍。因此,通過您的「@ USE_TEMPLATE」在第一個'EXECUTE'中更改數據庫不會影響您的範圍,也不會影響第二個'EXECUTE'的範圍,該範圍仍然在原始數據庫內。 –