6

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

这有效:

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;
                }
            }
4

6 回答 6

6

我的工作代码与实例:

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

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

}
于 2013-01-24T06:47:25.220 回答
0

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

--忽略---

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

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

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

--结束忽略--

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

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

于 2013-01-24T06:51:28.860 回答
0

我认为您忘记将值分配给您的 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;
                    }
                }
于 2013-01-24T06:57:02.273 回答
0
builder.ConnectionString = @"Server=DLS-534\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog

使用 @ 符号转义 \

于 2014-02-26T12:39:03.797 回答
0

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

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

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

于 2016-07-05T15:00:42.233 回答
0

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

于 2018-07-23T12:16:46.223 回答