Я удивлен, что этого не произошло раньше, но я ничего не нашел в поиске ни здесь, ни в другом месте. Я нашел что-то неопределенно похожее, что указывает на то, что проблема заключается в том, что команда Use в моем скрипте длится только для одной строки, но не было никаких указаний на то, как обойти это.Сценарий для создания схемы с использованием переменной
Что я пытаюсь сделать: Создайте общий скрипт для создания базы данных «шаблонов» со всеми моими общими схемами и таблицами. Все переменные (такие как имя базы данных) предназначены для установки в заголовке, чтобы их можно было изменять по мере необходимости, и скрипт можно просто запустить без необходимости выполнять какие-либо рискованные операции поиска и замены для изменения жестко закодированных значений.
В чем проблема: я не могу заставить схемы генерировать в правой базе данных; все они производятся в Мастере. Попытка явно установить базу данных не помогла; Я только что получил ошибки времени выполнения.
Мой уровень умения: длительное время Доступ к пользователю, но все еще в предгорьях изучения 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] АВТОРИЗАЦИЯ [dbo] Сгенерированная ошибка «CREATE SCHEMA» должна быть первым оператором в пакете запросов. –
@AlanK - Конечно. Не думал об этом. –
Но ваш пересмотренный код работал блестяще! Благодарю вас, вы, да! –