ExecuteSqlScriptwithTransaction: сбой, исключение: оператор ALTER DATABASE не разрешен в транзакции с несколькими операторами - PullRequest
0 голосов
/ 11 июня 2018

Когда я пытаюсь выполнить запрос ниже (Sql Server), я получаю исключение, говорящее

ExecuteSqlScriptwithTransaction: сбой с исключением: оператор ALTER DATABASE не разрешен в транзакции с несколькими операторами.

DECLARE @sql nvarchar(500)

IF((SELECT (size * 8 /1024.0)*1000 FROM sys.database_files df WHERE df.name like 'Test') < 9000000)  
   BEGIN    
      SET @sql = 'ALTER DATABASE Test MODIFY FILE ( NAME = N''Test'', SIZE = 10000000KB );'
      EXEC (@sql)          
  END 

GO

Пробовал как ниже, но та же ошибка

DECLARE @sql nvarchar(500)

IF((SELECT (size * 8 /1024.0)*1000 FROM sys.database_files df WHERE df.name like 'Test') < 9000000)
BEGIN
ALTER DATABASE Test MODIFY FILE ( NAME = N'Test', SIZE = 10000000KB )
END

GO

1 Ответ

0 голосов
/ 12 июня 2018

Метод ExecuteSqlScriptwithTransaction, указанный в заголовке, предполагает, что код выполняет сценарий в транзакции.В документации ALTER DATABASE конкретно указано:

Оператор ALTER DATABASE должен выполняться в режиме автоматической фиксации (режим управления транзакциями по умолчанию) и не допускается в явной или неявной транзакции.

Таким образом, решение состоит в том, чтобы выполнить сценарий, используя другой метод, один без явной транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...