У меня проблема с повышением уровня совместимости базы данных для текущей базы данных в 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 без явного знания имени базы данных?