【问题标题】:SQL Connection String with Instance Parameter带有实例参数的 SQL 连接字符串
【发布时间】:2013-01-24 06:43:17
【问题描述】:

我正在尝试检查(在 .net c# 中)是否能够连接到 SQL 服务器。但是,每当我在连接字符串中指定 instance 时,我就无法再连接。 :

这行得通:

builder.ConnectionString = "Server=DLS-534;user id=sa;password=Mypassword;initial catalog=master";

这不起作用:

builder.ConnectionString = "Server=DLS-534\\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog=master";

为什么这不起作用???。我确实需要能够连接到特定实例,因为用户可能有多个数据库。

我的完整代码:

            SqlConnectionStringBuilder builder =
                new SqlConnectionStringBuilder();

builder.ConnectionString = "Server=DLS-534\\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog=master";

            using (var connection = new SqlConnection(builder.ConnectionString))
            {
                try
                {
                    connection.Open();
                    return true;
                }
                catch (SqlException)
                {
                    return false;
                }
            }

【问题讨论】:

  • 你得到的确切错误信息是什么?

标签: c# asp.net sql sql-server c#-4.0


【解决方案1】:

我的带有实例的工作代码:

const string connStringWork = "Data Source=server\\instance;Initial Catalog=db;Integrated Security=True;Application Name=ЦС";

using (SqlConnection conn = new SqlConnection(connStringWork))
{

}

【讨论】:

    【解决方案2】:

    我认为您忘记将值分配给您的 connString。

    SqlConnectionStringBuilder builder =
                        new SqlConnectionStringBuilder(GetConnectionString());
    
        builder.ConnectionString = "Server=DLS-534\\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog=master";
    
    connString = builder;
                    using (var connection = new SqlConnection(connString))
                    {
                        try
                        {
                            connection.Open();
                            return true;
                        }
                        catch (SqlException)
                        {
                            return false;
                        }
                    }
    

    【讨论】:

      【解决方案3】:

      好的,你编辑了你的问题...

      -- 忽略 ---

      您在 2 个位置分配连接字符串:

      1. new SqlConnectionStringBuilder(GetConnectionString());
      2. builder.ConnectionString = "..."

      GetConnectionString() 是做什么的?如果您将其替换为连接字符串并省略第二个位置怎么办?

      -- 结束忽略--

      除此之外,这里有一个互联网上的资源来查找您需要的连接字符串:ConnectionStrings.com

      选择您的数据库并找到您的字符串。如果您的字符串与那里的格式相同,则您的参数一定有问题。

      【讨论】:

        【解决方案4】:
        builder.ConnectionString = @"Server=DLS-534\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog
        

        使用@符号转义\

        【讨论】:

          【解决方案5】:

          我认为这与 SQL Server 在您的系统上的设置方式有关。我相信可以以不需要实例名称的方式安装它(如果包含则将不起作用)。

          因此,根据您安装 SQL Server 的方式,您可能需要提供实例名称,也可能不需要。

          如果您不确定或无法控制安装方法,那么我会先尝试使用实例名称(例如:Server=localhost\SQLServer2016Express),如果它作为后备失败尝试不使用实例名称进行连接(只需连接仅限主机名)例如:Server=localhost

          【讨论】:

            【解决方案6】:

            试试IP和端口:connectionString = "Data Source=XXX.XXX.XXX.XXX,XXXX

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-03-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多