6

我的一台机器上安装了 2008 SQL Server Express,我正在尝试建立远程连接......当我使用 MS SQL Server Management Studio 时,我可以毫无问题地登录数据库(使用相同的凭据),但是当我尝试在我的 C# 应用程序中创建连接字符串时,出现异常:

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。

这是我的连接字符串的样子(私人信息已更改):

"Data Source="MACHINENAME\\SQLEXPRESS";User ID="Admin";Password="the_password";Initial Catalog="MyDatabase";Integrated Security=True;Connect Timeout=120");

正如我所说,我可以使用具有相同设置的 Management Studio 登录:相同的用户 ID、密码和数据源名称,但是当我尝试使用上述连接字符串打开连接时它会失败。

笔记:

  1. 我在服务器上启用了远程连接,禁用了防火墙,启用了与服务器的 TCP/IP 连接,打开了 SQL 浏览器。

  2. 当我在同一台机器上时,连接字符串工作正常。

  3. 我查看了集成安全选项并将其设置为 false 只是为了确保它没有尝试使用 Windows 登录,但它仍然失败。

  4. 数据库设置为允许 Windows 登录和数据库登录。

  5. 我将 Integrated Security 选项更改为 SSPI、True,最后是 False,所有 3 个都给了我与上述相同的错误。

谁能告诉我我做错了什么?

更新,这是我的确切代码(这次只删除了密码,并且我添加了在同一台机器上运行的管理工作室的图片):

string _connectionString =
            //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Connect Timeout=120", // Same problem
            //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Integrated Security=False;Connect Timeout=120", // Same problem
            string.Format("Data Source=%s;User ID=%s;Password=%s;Initial Catalog=%s;Integrated Security=False;Connect Timeout=120", // Same problem
            "GANTCHEVI\\SQLEXPRESS",
            "FinchAdmin",
            "the_password",
            "Finch");

通过 Management Studio 连接:参见图片 http://s113.photobucket.com/albums/n202/ozpowermo/?action=view¤t=ManagementStudio.jpg

http://s113.photobucket.com/albums/n202/ozpowermo/?action=view¤t=ManagementStudio.jpg

我想到了:

当使用“数据源=”标签时,应该使用“用户 ID”,如果您使用用户 ID,它似乎不起作用!

string _connectionString = "Data Source=GANTCHEVI\\SQLEXPRESS;Initial Catalog=Finch;Integrated Security=False;User Id=FinchAdmin;Password=the_password;Connect Timeout=0";"
4

5 回答 5

12

从连接字符串中删除 Integrated Security=True 并(可选)添加 Persist Security Info=True;

来自 MSDN:

Integrated Security - 如果为 false,则在连接中指定用户 ID 和密码。如果为 true,则使用当前 Windows 帐户凭据进行身份验证。

于 2009-06-15T17:01:36.653 回答
2

试试这个

string sqlcon=("Data Source="your pc name\\SQLEXPRESS"; 
UserID=sa;
Password=****;
Initial Catalog="+MyDatabase+"; 
IntegratedSecurity=True;");
于 2012-08-19T07:56:20.183 回答
1

好的 - 我猜你已经尝试了所有这些http://blogs.msdn.com/sqlexpress/archive/2005/05/05/415084.aspx

您是否尝试过 MACHINENAME\SQLEXPRESS 上的 sqlping

你能 ping MACHINENAME

最后,我很确定您只需要 1 个斜杠,即 MACHINENAME\SQLEXPRESS

于 2009-06-15T17:05:04.233 回答
1

可能是您的 SQL 实例未配置为接受传入的 TCP 连接,您可以在开始 -> SQL Server 2008 -> 配置工具 -> SQL Server 配置管理器下进行检查。在该工具的左侧,您将看到网络配置,展开它以查看启用了哪些协议。

于 2009-06-15T17:11:43.173 回答
0

如果您使用 Integrated Security=SSPI 会怎样?

如果您不想使用 Windows 登录,我相信有关删除 Integrated Security 参数的其他答案是正确的。

于 2009-06-15T16:58:33.033 回答