Sql-Server-2008
向後兼容(到 SQL 2000)伺服器版本和兼容性版本檢查
我有一個腳本,它使用 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/