2009-06-15 222 views
5

我有一台2008 SQL Server Express安装在我的一台机器上,我试图建立远程连接......当我使用MS SQL Server Management Studio时,我可以登录到数据库不会在任何问题(有相同的凭据),但是当我尝试在我的C#应用​​程序创建一个连接字符串,我得到一个异常:c#2008 SQL Server Express连接字符串

同时建立出现了特定情况下,网络相关的或 错误连接到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. 我将集成安全选项更改为SSPI,True,最后是False,所有3都给了我与上面相同的错误。

有人可以告诉我,如果我做错了什么?

UPDATE,这是我确切的代码(仅这一次的密码会被删除,而我已经添加在同一台机器上运行的管理工作室的照片):

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"); 

Connected Via Management Studio: See Picture http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

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

我想通了:

当使用日e“数据源=”标签应该使用“用户ID”,如果您使用用户ID,它看起来好像不起作用!

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

回答

11

从您的连接字符串,并删除集成安全性= TRUE(可选)添加持续安全信息= TRUE;

从MSDN:

集成安全性 - 当在连接指定假的,用户ID和密码。如果为true,则使用当前的Windows帐户凭据进行身份验证。

+0

+1尼斯解释。 – Praveen 2013-06-26 04:22:21

0

如果您使用Integrated Security = SSPI,该怎么办?

如果你不想使用Windows登录,我相信有关删除集成安全性参数,对方的回答是正确的。

1

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

你试过sqlping上MACHINENAME \ SQLEXPRESS

你能平安MACHINENAME

最后,我敢肯定你只需要1个斜线即MACHINENAME \ SQLEXPRESS

+0

感谢回答:) 是的,我已经启用了所有的这些设置,我可以使用Management Studio连接到数据库,现在,我实际上Management Studio中连接。 我可以ping MACHINENAME,它会返回192.168.0.9(连接到我的路由器的机器的地址)。 由于斜杠被认为是特殊字符,所以它在字符串中时是两个斜线。 – Kiril 2009-06-15 17:12:53

+0

在两个斜杠上完全正确,认为它在配置中。卫生署! – 2009-06-16 10:16:58

1

也可能是你的SQL实例未cobfigured接受传入的TCP连接,你可以站下检查此rt-> SQL Server 2008 - >公理化工具 - > SQL Server配置管理器。在该工具的左侧,您将看到网络配置,将其展开以查看启用了哪些协议。

2

试试这个

string sqlcon=("Data Source="your pc name\\SQLEXPRESS"; 
UserID=sa; 
Password=****; 
Initial Catalog="+MyDatabase+"; 
IntegratedSecurity=True;");