我需要编程确定数据库是否支持Geography数据类型和空间索引。这些功能是在2008年推出的。我还需要确定是否启用CLR,因为这些功能依赖于它。什么是最可靠的方法来做到这一点?如何确定SQL Server 2008或更高版本
回答
SQL Server 2008是10.x的
可以在SQL中使用SERVERPROPERTY和查询sys.configurations
SELECT
PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS varchar(20)), 3) AS MajorVersion,
value_in_use
FROM
sys.configurations
WHERE
name = 'clr enabled';
编辑:添加CAST
解析如下:
select @@VERSION
SELECT * FROM sys.configurations WHERE name = 'clr enabled'
SELECT compatibility_level from sys.databases where name=db_name()
,如:
select
CASE
WHEN LEFT(@@VERSION,25)='Microsoft SQL Server 2008' THEN 'Yes'
ELSE 'NO'
END AS OnSQLServer2008
,CASE value
WHEN 0 THEN 'No'
ELSE 'Yes'
END AS [clr_enabled]
,(SELECT CASE compatibility_level WHEN 100 then 'Yes' ELSE 'No' END from sys.databases where name=db_name()) AS SQLServer2008CompatibilityMode
FROM sys.configurations
WHERE name = 'clr enabled'
输出:
OnSQLServer2008 clr_enabled SQLServer2008CompatibilityMode
--------------- ----------- ------------------------------
Yes No No
(1 row(s) affected)
只是在寻找是否有东西,返回更简单的结果是@@ VERSION - 它提供了一个混乱的字符串,如“Microsoft SQL Server的2008 R2(RTM) - 10.50 .1617.0(X64)2011年4月22日十九时23分43秒版权所有(c)Microsoft公司标准版在Windows NT(64位)6.1
是解析@@版本,但正如乔恩所说,这可能有点混乱,还有更可靠的方法来确定版本吗? –
@Jon Egerton,@@ VERSION并不理想,所以我在兼容模式下加入了检查。它比@@ VERSION更精确。如果数据库是2008年,但在2005年模式下运行,则Geography数据类型将不存在。 –
您可以使用SELECT @@VERSION
它返回一个相当详细的字符串。
更容易的是看使用
select compatibility_level from sys.databases where name=db_name()
这将返回一个数字数据库兼容级别。频繁的值,例如:
80 = SQL Server 2000的
90 = SQL Server 2005的
100 = SQL Server 2008的
这有检查的好处是,服务器上的数据库处于所需的级别,而不仅仅是服务器本身运行特定的系统版本。
对于新的新版本,要求compatibility_level为100类型? – gbn
我在某处(在几十个博客中的一个上)读到,虽然它可用,但使用少于100个并不是一个好主意。只是一直在寻找该项目(2年后!),不能把我的手放在上面。关卡之间可能存在复制问题,但我认为除此之外还有其他更具体的事情。 –
对于波纹管提到的版本,找出使用下面提到的查询
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('EngineEdition') AS EngineEdition;
。
- 1. SQL Server 2005或2008版本
- 2. 如何确定Compact Edition 4到SQL Server 2008的SQL Server版本号?
- 3. 如何检查是否SQL Server 2008的版本或更高版本在C#Windows窗体
- 4. MS SQL Server(2008版或更高版本) - 如何在我的ID列中创建自动增量
- 5. SQL Server 2008:标准版或SQL Express
- 6. SQL Server多个累积总和(2012或更高版本)
- 7. SQL Server 2008 Express或企业版
- 8. 从ADO.NET确定SQL Server的版本
- 9. 如何确定我是否安装了本地SQL Server 2008 R2
- 10. Informix的SQL SERVER 2008版本ENCRYPT_TDES
- 11. SQL Server 2008开发和版本控制?
- 12. SQL Server 2008 SP1的版本是什么?
- 13. 要使用哪个SQL Server 2008版本
- 14. 抑制SQL Server 2008 R2及更高版本中存储过程的输出
- 15. 如何定位多的SQL Server版本
- 16. SQL Server版本更新表
- 17. 如何确定一个表是什么版本的SQL Server Compact?
- 18. 高级SQL SERVER 2008视频
- 19. sql server 2005 express和sql server 2008开发者版本
- 20. SQL Server 2008 vs Visual Studio 2010 Express版本的SQL Server
- 21. Cassandra 3.0及更高版本需要Java 8u40或更高版本
- 22. 更新版本的SQL Server 2008管理工作室
- 23. 如何查看SQL Server 2008是否是R2版本?
- 24. 如何识别SQL Server 2008标准的版本号
- 25. 下载链接SQL Server 2008 Developer Edition和SQL Server 2008标准版?
- 26. SQL Server 2008:我如何部署更改?
- 27. 如何更新vb.net 2013的SQL Server 2008
- 28. 使用Xcode 6或更高版本或Application Loader 2.9.1或更高版本提交您的版本
- 29. 无法安装SQL Server 2008:以前版本的VS 2008错误
- 30. SQL Server 2008 - 高速缓存动态SQL
消息8116,级别16,状态1,行1 参数数据类型sql_variant对于parsename函数的参数1无效。 –
@KM:添加CAST – gbn
SERVERPROPERTY('ProductVersion')'显示安装的内容,而不是正在运行的兼容模式。如果以不支持Geography数据类型的旧兼容模式运行,依赖于SERVERPROPERTY('ProductVersion')的软件将失败。 –