SQL 2005 - изменить уровень совместимости для текущей базы данных, не зная имени - PullRequest
1 голос
/ 07 ноября 2019

У меня проблема с повышением уровня совместимости базы данных для текущей базы данных в SQL Server 2005. Метод alter database ... не работает в SQL 2005, так как у него не было этого синтаксисатогда (это началось в 2012 году). Итак, я понял, что могу сделать это так:

EXEC sp_dbcmptlevel [SomeDB], 80;

Однако мне нужно сделать это для базы данных current , так как имя базы данных не будет явно известно в этомскрипт. Присоединяясь к другому подобному решению, которое я нашел, я попытался ...

declare @dbname varchar(50)
set @dbname = DB_NAME()
declare @sql varchar(200)
set @sql = 'EXEC sp_dbcmptlevel '+@dbname+', 80'
EXEC(@SQL)

Но этот метод ему не нравится - он выдает следующую ошибку:

sys хранимой процедуры.sp_dbcmptlevel 'может выполняться только на специальном уровне.

Причина этого в SQL 2005 состоит в том, что это очень большой скрипт (более 40 000 строк), который обновляет базу данных с SQL 7,и SQL 2005 была последней версией, которая способна восстановить базу данных из SQL 7.

Как динамически повысить уровень совместимости базы данных с SQL 7 до SQL 2000 с SQL 2005 без явного знания имени базы данных?

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