C# 如果安装了SQL server(标准版),如何通过代码获取服务器名称

C# 如果安装了SQL server(标准版),如何通过代码获取服务器名称,c#,.net,sql-server,ado.net,connection-string,C#,.net,Sql Server,Ado.net,Connection String,如果安装了SQL server(标准版),如何通过代码获取服务器名称 我们在创建连接SQL server的连接字符串时传递服务器名称。我们可以通过代码检索这个值吗 string sqlConnectionString = string.Format( "user id={0};password={1};server={2};Trusted_Connection=no;database=TestDB; connection timeout={3}", dirDBinfo.UserName, dir

如果安装了SQL server(标准版),如何通过代码获取服务器名称

我们在创建连接SQL server的连接字符串时传递服务器名称。我们可以通过代码检索这个值吗

string sqlConnectionString = string.Format(
"user id={0};password={1};server={2};Trusted_Connection=no;database=TestDB;
connection timeout={3}",
dirDBinfo.UserName, dirDBinfo.Password, "ServerName", dirDBinfo.TimeOut);

我不确定我是否明白你想要什么

如果您已经有一个连接字符串,并且您正试图从中提取服务器名称以供其他地方使用,则可以像这样对其进行反向工程:

var parser = new SqlConnectionStringBuilder(connectionString);
var serverName = parser.DataSource;
如果您是第一次构造连接字符串,则:

  • 如果您知道要连接到执行客户端代码的计算机上的SQL Server,则只需使用
    (本地)
    作为服务器名称。如果SQL Server具有实例名称,请按如下方式指定:
    (本地)\myinstancename
  • 如果您事先不知道要连接到哪个服务器,那么就由您从其他地方获取该信息

  • 服务器在本地计算机上吗?
    如果是,请将服务器名称设置为
    localhost

    如果没有


    此外,不应使用
    string.Format
    构建连接字符串,而应使用。这将使用分号处理值

    例如:

    var builder = new SqlConnectionStringBuilder();
    
    builder.UserID = dirDBinfo.UserName;
    builder.Password = dirDBinfo.Password;
    builder.Server= "localhost";
    builder.UserID = dirDBinfo.UserName;
    builder["Trusted_Connection"] = "no";
    builder.Database = "TestDB"
    builder.ConnectTimeout = dirDBinfo.TimeOut;
    

    您不能对此连接执行SELECT@@SERVERNAME吗?

    所以我们仍在构建连接字符串?在这种情况下,决定选择哪个SQL server的逻辑是什么?如果它是本地的,那么正如您所说的,只需使用localhost。但我认为我们已经传递了服务器名,现在我们需要在代码中以某种方式检索它…我理解这个问题,这就是他所问的。我同意-听起来Ashish试图让应用程序猜测要使用哪台服务器,但它根本无法做到。除了通过
    (local)
    选择默认本地实例之外,唯一明智的选择是告诉代码要使用哪个服务器。如何做到这一点取决于你自己。