【发布时间】:2012-01-25 00:20:51
【问题描述】:
我很惊讶以前没有出现过这种情况,但我在这里或其他地方的搜索中都没有找到任何东西。我发现了一些模糊的相似之处,这表明问题是我的脚本中的 Use 命令只持续了那一行,但没有迹象表明如何解决这个问题。
我正在尝试做的事情:创建一个通用脚本来创建一个包含所有常用模式和表的“模板”数据库。所有变量(例如数据库名称)都旨在设置在标头中,以便可以根据需要更改它们,并且可以运行脚本而无需执行任何有风险的搜索和替换操作来更改硬编码值。
问题是:我无法在正确的数据库中生成模式;它们都在Master中生成。尝试显式设置数据库没有帮助;我刚刚收到运行时错误。
我的技能水平:长期访问用户,但仍处于探索 SQL Server 的山脚下。我敢肯定(好吧,希望)这对于更上坡的人来说会非常容易。
有谁知道我该怎么做这样的事情? (现有代码如下所示。)
DECLARE @DBName NVARCHAR(50) = 'TheDBName';
-- Assume that there's a bunch of code to drop and create the database goes here.
-- This code executes correctly.
SET @SQL = 'Use [' + @DBName + ']';
Print @SQL;
EXEC(@SQL);
SET @Counter = 1;
WHILE @Counter <=3
BEGIN
SET @SQL = 'CREATE SCHEMA [' +
CASE @Counter
WHEN 1 THEN 'Schema1'
WHEN 2 THEN 'Schema2'
WHEN 3 THEN 'Schema3'
END
SET @SQL = @SQL + '] AUTHORIZATION [dbo]';
PRINT 'Creating Schemas, ' + @SQL;
Exec(@SQL);
SET @Counter = @Counter + 1;
END
【问题讨论】:
标签: sql sql-server tsql schema