【问题标题】:Can't connect to named instance of sql server asp.net c#无法连接到sql server asp.net c#的命名实例
【发布时间】:2017-12-12 11:47:51
【问题描述】:

我无法通过 ASP.NET 连接到 sql server 的命名实例,它不是默认实例。 我的服务器名称是 NAMEOFSERVER\NAMEOFINSTANCE。

如果我尝试连接到服务器的默认实例,它可以工作。

我使用以下连接字符串:

connection_string = "Data Source=" + servername + ";Initial Catalog=" + db_catalog + ";User Id=" + user + ";Password=" + password + ";persist security info=False;Trusted_Connection=No;Connection Timeout=1000"

SQL Server Browser 服务正在运行。

【问题讨论】:

  • 您收到的错误信息是什么?
  • 你能通过sql management studio连接吗?
  • 是的,通过 sql management studio 连接工作正常。
  • 这不是连接字符串,这是字符串连接。调试您的代码并检查 connection_string 是否包含您期望的内容。例如,您可能在其中有一个 \n 转义序列。
  • 我记录了 connection_string,它包含了我期望的内容。奇怪的是:我在同一台服务器上的另一个命名实例具有相同的连接字符串(只有服务器名称中的实例名称不同)并且连接正常

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


【解决方案1】:

确保您的连接字符串具有上述模式:

var connectionString = $"Data Source=myServerName\\myInstanceName;Database=myDataBase;User Id=myUsername; Password=myPassword;",

此外,请确保您可以通过 SQL Management Studio 进行连接,因为 SQL Server 实例可能会限制对某些用户的访问(请确保您连接到您希望应用使用的相同用户名和密码)。


编辑

如果您用来连接的用户不是 Windows 帐户的一部分,请打开您的实例安全配置并确保启用了 Mixed Mode

【讨论】:

【解决方案2】:

您可能想检查您的变量“servername”是否包含双反斜杠。这是必需的,因为反斜杠是转义字符。

connection_string = "Data Source=" + servername.Replace("\\", "\\\\") + ";Initial Catalog=" + db_catalog + ";User Id=" + user + ";Password=" + password + ";persist security info=False;Trusted_Connection=No;Connection Timeout=1000"

【讨论】:

  • 我的变量包含一个反斜杠:“nameofmyserver\nameofmyinstance” - 这是一个问题吗?
  • 你试过我添加的 ConnectionString 了吗?在那里,反斜杠被转换为双反斜杠。我的建议是,当你这样尝试时它会起作用。
  • 在源代码中指定字符串时需要转义反斜杠。实际字符串中不需要双反斜杠。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 2015-05-22
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
相关资源
最近更新 更多