【问题标题】:Identify whether current SQL version belongs to Azure or Microsoft SQL server stand alone确定当前 SQL 版本是属于 Azure 还是 Microsoft SQL Server 独立
【发布时间】:2018-12-20 09:29:48
【问题描述】:

我想知道哪个版本的 SQL 在连接字符串和任何其他方法的基础上在 c# 中连接我的应用程序。

基本上,用户在我的应用程序中提供连接字符串,它将连接到 Microsoft SQL Server 或 Microsoft Azure SQL。

因此,我想在相应版本上运行一组查询。

【问题讨论】:

  • 通常连接字符串由应用程序控制,而不是用户。如果用户提供连接详细信息,那么他们不应该知道他们正在连接什么,从而知道版本的限制吗?为什么应用程序需要知道?
  • 听起来像XY problem
  • @larnu,忘了说是在安装时......
  • 在您的应用程序中创建一个配置设置,并让用户定义它的配置版本。
  • 我更正了用户(在 OP(真正的 OP)问之前)@UweKeim。因此,安装应用程序的人会被问到“您使用的是什么版本的 SQL Server”,并附有 支持 版本的列表。他们会选择合适的版本,应用程序现在知道它正在安装哪个版本。

标签: c# sql-server azure-sql-database


【解决方案1】:

虽然@@version 似乎是一种可行的方法,但解析这样的字符串可能会很棘手。 current documentation 推荐这种方法:

SELECT SERVERPROPERTY('EngineEdition');

要以编程方式确定引擎版本,请使用 SELECT SERVERPROPERTY('EngineEdition')。此查询将为独立数据库返回“5”,为 Azure SQL 数据库中的托管实例返回“8”。

【讨论】:

  • 而且,如果您希望为您“翻译”文本(而不是使用版本 ID 播放“幻数”),您可以简单地运行:SELECT SERVERPROPERTY('Edition') ;而是。
  • @MichaelK.Campbell,取决于你的追求。 Edition 显示人类可读的字符串,即实际版本。但是,EngineEdition 按功能将它们组合在一起。例如,Enterprise、Developer 和 Evaluation 具有相同的功能,因此它们具有相同的值 3。在脚本中,后者更容易检查,因为脚本往往不关心许可,只关心您在特定实例上可以做什么和不可以做什么(在线索引重建,一些仅限企业的 AG 位等)。
【解决方案2】:

@@VERSION 会告诉你。如果您连接到 Azure,它将返回以 Microsoft SQL Azure 开头的文本。

select @@VERSION

天蓝色

Microsoft SQL Azure (RTM) - 12.0.2000.8 Nov 20 2018 21:01:54 版权所有 (C) 2018 Microsoft Corporation

内部部署

Microsoft SQL Server 2016 (SP1-GDR) (KB4458842) - 13.0.4224.16 (X64) 2018 年 8 月 18 日 09:00:06 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) o​​n Windows Server 2016 Standard 6.3 (内部版本 14393:)(管理程序)

您还可以从连接字符串中检查服务器名称 - 它是否以 .database.secure.windows.net.database.windows.net 结尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 2012-02-16
    • 2017-07-01
    • 2010-09-14
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多