我目前正在使用SQL CLR进行SQL Server中的时区转换,因为它是一个不安全的程序集,我无法在Azure中运行它。我们支持内部部署和Azure是业务需求。我正在考虑为Azure使用AT TIME ZONE功能,并为内部部署保留SQL CLR。
我希望能够添加一个使用' AT TIME ZONE'如果可能,否则会调用程序集。
我可以在运行sql之前使用语法运行测试查询来创建函数,如果出现错误则创建另一个...但这意味着如果加载了一个实例的备份可能包含错误进入不支持语法的旧版SQL服务器版本(例如2016年至2014年)。
测试的最佳实践方法是什么(最好是在SQL语句本身内),数据库是否支持这种语法?
答案 0 :(得分:5)
AT TIME ZONE是SQL Server 2016(从CTP 3.1开始)和最新版本的Azure SQL数据库(V12)中提供的新功能。 它也可用于SQL2016的所有本地版本以及Azure SQL数据库的所有服务层。 话虽如此,确定是否支持AT TIME ZONE的最佳方法是通过运行以下查询来检查服务器版本
SELECT SERVERPROPERTY ('Edition') as Edition
SERVERPROPERTY('ProductVersion')as VersionNumber
如果版本=' SQL Azure'比VersionNumber必须是> =' 12'
如果是版本!=' SQL Azure'版本号必须是> =' 13.0.800.000' (CTP 3.1)
有关SERVER属性的更多详细信息,请查看MSDN:https://stackoverflow.com/a/29809907/456456
谢谢, Borko Novakovic(MSFT)