Sql-Server-2008

向後兼容(到 SQL 2000)伺服器版本和兼容性版本檢查

  • April 8, 2011

我有一個腳本,它使用 SQL Server 2000 中不存在的功能。具體來說,該腳本創建了一個儲存過程,該過程使用 SQL Server 2005 中添加的數據類型。

我需要使用條件邏輯來確保(1)伺服器版本是2005或更高版本以及(2)目標數據庫的兼容級別是2005或更高版本。此外,此腳本需要在 SQL Server 2000 上無錯誤地執行,顯然無需實際添加新的儲存過程。

我成功解析SERVERPROPERTY('productversion')以確定伺服器版本。SELECT COMPATIBILITY_LEVEL FROM sys.databases WHERE [name] = ('DBName')但是,我可以找到有關訪問SQL Server 2005+的兼容性級別參考並sysdatabases在 SQL Server 2000 上進行選擇的所有資訊。不幸的是,這些方法都不適用於它需要執行的所有四個 SQL Server 版本(2000、2005、2008、 2008R2)。

想法?

這適用於2000及以上:

select name,cmptlevel from master.dbo.sysdatabases

我不知道您是否有比以下解決方案更好的方法。

執行以下操作並在表格中擷取結果

   CREATE TABLE #DBCC (
   ParentObject VARCHAR (255)
   , [Object] VARCHAR (255)
   , Field VARCHAR (255)
   , [Value] VARCHAR (255)
) 

INSERT INTO #DBCC
EXEC ('DBCC DBINFO WITH TABLERESULTS')

DECLARE @val INT
SELECT @val = Value FROM #DBCC WHERE field = 'dbi_version'

IF ( @val >= 611 )
BEGIN
   SELECT compatibility_level FROM sys.databases WHERE database_id = DB_ID();
   --Deploy 2005 and above stuff
END
ELSE
BEGIN
   --Don't deploy 2005 and above stuff
END

不過,我為不同的問題做了類似的事情。

http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/

引用自:https://serverfault.com/questions/256590