gpt4 book ai didi

c# - 从 Server\Instance 如何确定服务依赖性?

转载 作者:太空狗 更新时间:2023-10-30 00:58:40 25 4
gpt4 key购买 nike

我有一个安装程序,用户在连接字符串中输入数据源(即 DataSource="machinename\instance")。

使用 C# 给定机器名\实例字符串,我需要知道服务名称是 MSSQLSERVER 还是 MSSQL$SQLEXPRESS

在一台特定的机器上,我们安装了 SQL Server 2005(完整版)和 SQL Express 2008。

我需要知道这一点的原因是在我们的 wix 安装程序中,要安装的主应用程序依赖于 SQL 服务器,所以我们需要有正确的依赖关系才能安装它。依赖项可能在服务 MSSQLSERVER 或 MSSQL$SQLEXPRESS 上,我可以在一台机器上安装这两个服务。

京东

最佳答案

SQL Server 服务被命名为 MSSQLSERVER(默认实例)或 MSSQL$INSTANCENAME(命名实例)。您可以从连接字符串确定它是否是命名实例(如果是 host\instance 形式,则为命名实例,如果是 host 则为默认实例)但事实是这并不可靠,因为:

  • 连接字符串可以使用 SQL 客户端别名
  • 连接字符串可以连接到监听默认端口的命名实例
  • 连接字符串可以连接到一个明确的端口并且不指定实例名称

所以更可靠的方法是连接并询问实例名称:

SELECT SERVERPROPERTY('InstanceName');

如果返回为 NULL,则服务名称将为 MSSQLSERVER,否则为 MSSQL$...您甚至可以将其直接放入查询中:

SELECT COALESCE('MSSQL$'+cast(SERVERPROPERTY('InstanceName') as sysname), 'MSSQLSERVER');

关于c# - 从 Server\Instance 如何确定服务依赖性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2388344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com