从TSQL检测Sql Express

Yor*_*ort 5 t-sql sql-server detect sql-server-express

我需要一种安全(即一致,健壮)的方法来检测我正在访问的sql server是否是Sql Express.我想我更愿意从TSQL中做到这一点,因为我已经有一个连接字符串和我需要执行TSQL的所有库(这应该有助于避免WMI是否安装/运行的问题,用户有访问注册表的权限等).

有谁知道这样做的方法?

谢谢.

PS:基本上我想这样做,所以我可以监控我的数据库大小与4gb限制,并在我接近它时采取行动...但如果我在一个完整的Sql Server版本上运行,那么我不希望代码担心它,因为没有(实际)硬编码限制.我可以在我的程序中进行手动设置,但如果代码自动执行正确的操作会更好,因此需要知道服务器是否是"Express"版本.

dev*_*vio 7

使用

SELECT SERVERPROPERTY('EditionID')
Run Code Online (Sandbox Code Playgroud)

要么

SELECT SERVERPROPERTY('Edition')
Run Code Online (Sandbox Code Playgroud)

检测正在运行的SQLServer版本.

http://msdn.microsoft.com/en-us/library/ms174396.aspx


Jer*_*yth 5

如果不是,则返回0,如果是,则返回非零(此处为126):

select charindex('Express Edition',@@version)
Run Code Online (Sandbox Code Playgroud)

布尔上下文中的示例:

if (select charindex('Express Edition',@@version)) > 0
    begin
        print 'Express edition!'
    end
else
    begin
        print 'Not Express edition!'
    end
Run Code Online (Sandbox Code Playgroud)


Chr*_*cht 5

SERVERPROPERTY函数 已经在多个其他答案中提到过,但是有一个比检查字符串是否包含“Express Edition”更好的解决方案:参数EngineEdition,它返回一个int值。

引用链接中的内容:

引擎版

服务器上安装的 SQL Server 实例的数据库引擎版本。

1 = 个人或桌面引擎(在 SQL Server 2005 及更高版本中不可用。)

2 = 标准(针对标准、Web 和商业智能返回此值。)

3 = 企业版(针对评估版、开发版和两个企业版返回此值。)

4 = Express(针对 Express、Express with Tools 和 Express with Advanced Services 返回此值)

5 = SQL 数据库

6 - SQL 数据仓库

基本数据类型:int

所以你可以像这样检查 Express Edition:

if SERVERPROPERTY('EngineEdition') = 4
    begin
        select 'Express'
    end
else
    begin
        select 'not Express'
    end
Run Code Online (Sandbox Code Playgroud)


Luk*_*asz 4

有多种方法:

EXEC sp_server_info 2
Run Code Online (Sandbox Code Playgroud)

或者

SELECT @@version
Run Code Online (Sandbox Code Playgroud)

或者

SELECT serverproperty('ProductVersion')
Run Code Online (Sandbox Code Playgroud)

您还可以这样做:

DECLARE @ver nvarchar(128)
SET @ver = CAST(serverproperty('ProductVersion') AS nvarchar)
SET @ver = SUBSTRING(@ver, 1, CHARINDEX('.', @ver) - 1)
IF ( @ver = '8' )
   SELECT 'SQL Server 2000'
ELSE IF ( @ver = '9' )
   SELECT 'SQL Server 2005'
ELSE
   SELECT 'Unsupported SQL Server Version'
Run Code Online (Sandbox Code Playgroud)

更多信息请访问:http://blog.devstone.com/aaron/default,date,2006-12-15.aspx