これは以前には登場しなかったのに驚いていますが、ここや他の場所の検索で何も見つかりませんでした。ぼんやりと似たようなものが見つかりました。これは、スクリプト内のUseコマンドがその1行だけ持続するという問題を示していますが、その回避方法の兆候はありませんでした。変数を使用してスキーマを作成するスクリプト
私がやろうとしていること:一般的なスクリプトを作成して、私の一般的なスキーマとテーブルを持つ「テンプレート」データベースを作成します。すべての変数(データベース名など)は、必要に応じて変更できるようにヘッダーに設定されています。また、危険な検索や操作を置き換えることなく、ハードコードされた値を変更することなくスクリプトを実行できます。
問題点:正しいデータベースで生成するスキーマを取得できません。彼らはすべてマスターで生成しています。明示的にデータベースを設定しようとしたが役に立たなかった。私はちょうどランタイムエラーを受け取った。
私のスキルレベル:長時間ユーザにアクセスしても、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
応答する時間をとってくれてありがとう、私にはうまくいかない恐れがあります。この行はUse [MYDBTEMPLATE];と出力されます。 CREATE SCHEMA [SCHEMA1] AUTHORIZATION [dbo]これは、 'CREATE SCHEMA'がクエリバッチの最初の文でなければならないというエラーを生成しました。 –
@AlanK - もちろんです。それを考えなかった。 –
しかし、改訂されたコードはすごくうまくいった!ありがとう、ありがとう、ダ男! –