我正在尝试准备将定期触发的SQL脚本,并且在MS SQL Server Enterprise版本上的行为与其他版本不同。 我知道我可以通过以下方式检查版本:
SELECT SERVERPROPERTY('edition')
所以我认为它可以像这样工作:
IF EXISTS
(SELECT SERVERPROPERTY('edition') as edition WHERE edition LIKE '%Enterprise')
BEGIN
print 'script for enterprise edition'
END
ELSE
BEGIN
print 'script for other verisons'
END
但我无法在WHERE子句中引用字段别名并收到错误&#34;无效的列名&#39; edition&#39;。&#34;,所以我尝试使用CTE:< / p>
WITH Test AS (SELECT SERVERPROPERTY('edition') as edition)
SELECT * FROM Test WHERE edition LIKE '%Enterprise'
但它也没有工作(&#34;参数数据类型sql_variant对于类似函数的参数1无效。&#34;)
您是否有任何建议如何实现依赖于版本的行为?
答案 0 :(得分:2)
这是支票:
if (cast(serverproperty('edition') as varchar) like '%enterprise%')
print 'script for enterprise edition'
else
print 'script for other verisons'
答案 1 :(得分:0)
%将SERVERPROPERTY的结果存储到变量:
DECLARE @Edition SYSNAME
SELECT @Edition = CAST(SERVERPROPERTY('Edition') AS SYSNAME)
IF (@Edition LIKE '%Enterprise%')
BEGIN
print 'script for enterprise edition'
END
ELSE
BEGIN
print 'script for other verisons'
END
编辑:根据@marc_s的评论更新