Рассмотрим следующий скрипт:
DECLARE @path varchar(MAX)
DECLARE @script varchar(MAX)
SET @path = (SELECT physical_name FROM sys.master_files where name = 'master');
SET @path = REPLACE(@path, 'master.mdf', '');
SELECT @path;
SET @script =
'CREATE DATABASE test
ON PRIMARY
(NAME = test_primary,
FILENAME = ''' + @path + 'test_primary.mdf'',
SIZE = 10MB,
FILEGROWTH = 10MB)';
exec(@script);
USE test
Когда я пытаюсь запустить все сразу, я получаю сообщение об ошибке:
Msg 911, Level 16, State 1, Line 31
Database 'test' does not exist. Make sure that the name is entered correctly.
Если я сначала запускаю exec, а затем отдельно запускаю USE
, то все идет хорошо.
Вопрос в том, как мне обойти это, чтобы можно было запустить весь сценарий одновременно без ошибок?