C# 如何以编程方式测试SQL Server是否支持';在时区';?
我目前正在SQL Server中使用SQL CLR进行时区转换,因为它是一个不安全的程序集,所以我无法在Azure中运行它。这是我们支持内部部署和Azure的业务需求。我正在考虑为Azure使用AT时区功能,并为内部部署保留SQL CLR 我希望能够添加一个使用“AT TIME ZONE”(如果可用)的sql函数,如果可能的话,它可以调用程序集 在运行sql创建函数之前,我可以使用语法运行一个测试查询,如果出现错误,可以创建另一个。。。但这意味着,如果将一个实例的备份加载到不支持语法的较旧sql server版本中(例如2016年至2014年),则可能会包含错误C# 如何以编程方式测试SQL Server是否支持';在时区';?,c#,sql-server,azure,azure-sql-database,C#,Sql Server,Azure,Azure Sql Database,我目前正在SQL Server中使用SQL CLR进行时区转换,因为它是一个不安全的程序集,所以我无法在Azure中运行它。这是我们支持内部部署和Azure的业务需求。我正在考虑为Azure使用AT时区功能,并为内部部署保留SQL CLR 我希望能够添加一个使用“AT TIME ZONE”(如果可用)的sql函数,如果可能的话,它可以调用程序集 在运行sql创建函数之前,我可以使用语法运行一个测试查询,如果出现错误,可以创建另一个。。。但这意味着,如果将一个实例的备份加载到不支持语法的较旧sql
测试数据库是否支持此语法的最佳实践方法是什么(最好是在SQL语句本身中)?时区是SQL Server 2016(从CTP 3.1开始)和最新版本的Azure SQL数据库(V12)中提供的一项新功能。 它还可以在SQL2016的所有prem版本和Azure SQL数据库的所有服务层中使用。 话虽如此,确定是否支持AT时区的最佳方法是通过运行以下查询来检查服务器版本
SELECT SERVERPROPERTY ('Edition') as Edition
SERVERPROPERTY('ProductVersion')as VersionNumber
如果版本='SQL Azure',则版本号必须>='12'
如果版本!='SQL Azure的版本号必须大于等于13.0.800.000(CTP 3.1)
有关服务器属性的更多详细信息,请查看MSDN:
谢谢,
博科·诺瓦科维奇(MSFT)