连接到SQL Server 2005时出错

baofeng0722 2009-06-10 07:47:06
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
SqlConnection conn;

protected void Page_Load(object sender, EventArgs e)
{

this.Title = "连接SQL Server数据库";
Button1.Text = "打开连接";
Button2.Text = "关闭连接";

string mycon = "Data Source=BOBO/SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
conn = new SqlConnection(mycon);

Label1.Text = "当前连接状态为:" + conn.State.ToString() + "<br>"; //使用State属性返回连接状态
}

protected void Button1_Click(object sender, EventArgs e)
{
conn.Open(); //使用Open方法打开连接
Label1.Text = "当前连接状态为:" + conn.State.ToString() + "<br>"; //使用State属性返回连接状态
}

protected void Button2_Click(object sender, EventArgs e)
{
conn.Close();
Label1.Text = "当前连接状态为:" + conn.State.ToString() + "<br>"; //使用State属性返回连接状态

}
}

运行后错误:

在建立与服务器的连接时出错。
在连接到 SQL Server 2005 时,
在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。
(provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

以下方法我都试过了,不好用


1. 数据库引擎没有启动。

有两种启动方式:

(1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动;

(2)可打开:开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,选中SQL Server 2005服务中SQL Server(MSSQLSERVER) ,并单击工具栏中的"启动服务"按钮把服务状态改为启动;

使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL Server 2005配置管理器"中的SQL Server 2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了.

2. 是否已经允许远程连接。

这个部分可以简单的分为4个方面,分别是在 SQL Server上启用远程连接、启用SQL Server 浏览服务、在Windows 防火墙中为SQL Server 2005 创建例外和在Windows 防火墙中为“SQLBrowser”创建例外。下面是几个具体的操作方式,摘自MSDN,个人觉得文章的黑体部分应当特别的一起我们的注意。


在SQLServer 实例上启用远程连接
1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”
3.然后单击展开“数据库引擎”, 选中“远程连接”,在右边选中“本地连接和远程连接”,
再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:
“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回
4.展开“数据库引擎”, 选中“服务”,在右边单击“停止”,等到 MSSQLSERVER 服务停止,
然后单击“启动”,重新启动MSSQLSERVER 服务。

启用 SQLServer 浏览器服务
1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”
3.然后单击展开“SQL Server Browser”, 选中“服务”,在右边“启动类型”选择“自动”,
再单击“启动”,单击“确定”按钮返回

在Windows 防火墙中为“SQL Server 2005”创建例外
1.在 Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\ MSSQL.1 \MSSQL\Binn\sqlservr.exe”,
单击“确定”返回
注意 : 路径可能会根据 SQL Server 2005 安装不同而不同。 MSSQL.1 是占位符,对应数据库实例ID。
4.对每个需要打开远程访问的SQL Server 2005 实例,重复步骤 1 至 3。

在Windows 防火墙中为“SQLBrowser”创建例外
1.在 Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe”,
单击“确定”返回

...全文
74 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hackervip1988 2009-06-12
  • 打赏
  • 举报
回复
楼主叫你一个笨的方法
脱一个数据源控件 进去
配置一下
得到 连接字符串
在对照一下
还有可能 是不是你的版本有问题
有可能不是SQLEXPRESS 版本的
改其他的试试
xray2005 2009-06-11
  • 打赏
  • 举报
回复
string mycon = @"Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
lgaimin 2009-06-11
  • 打赏
  • 举报
回复
开始->所有程序->sql2005->配置工具->SQL Server 外围应用配置器->服务器和连接的外围应用配置器->远程连接 选择tcp/ip

电脑重启..试下

--------------------------------------------------------------------

装了两个那样写当然是不行的..

要指定实例名去连接.

你改成

Server=windows\2005;database=name;Integrated security=True;

这样就不会有问题的..

另外一篇参考:SQL Server不允许进行远程连接可能会导致此失败
mengxj85 2009-06-11
  • 打赏
  • 举报
回复
估计是服务器名搞错了
hechenqingtian 2009-06-11
  • 打赏
  • 举报
回复
是不能进行远程连接:

我的电脑-管理-服务和应用程序-sql service配置管理器-sql server网络配置
-sqlexpress的协议-Tcp/Ip 改为启用

然后在服务和连接的外围配置器中sqlexpress 远程连接
本地连接和远程连接 改为 同时使用Tcp/IP和named pipes 然后重启服务


我之前也遇到过这种问题
微工程 2009-06-11
  • 打赏
  • 举报
回复
string mycon = "Data Source=BOBO/SQLEXPRESS;Initial Catalog=master;User ID=sa;Password= pwd;Integrated Security=True"
elmnd 2009-06-11
  • 打赏
  • 举报
回复
估计是USERNAME PASSWORD错了
十八道胡同 2009-06-10
  • 打赏
  • 举报
回复
// "uid=sa":连接数据库的用户名为sa.
// "password=":连接数据库的验证密码为空.他的别名为"pwd",所以我们可以写为"pwd=".
// "initial catalog=Northwind":使用的数据源为"Northwind"这个数据库.他的别名为"Database",本句可以写成"Database=Northwind".
// "Server=YourSQLServer":使用名为"YourSQLServer"的服务器.他的别名为"Data Source","Address","Addr".
// " Connect Timeout=30":连接超时时间为30秒.(根据情况添加)
// PS:
// 1.你的SQL Server必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录.如果你的SQL Server设置为Windows登录,那么在这里就不需要使用"uid"和"password"这样的方式来登录,而需要使用"Trusted_Connection=SSPI"来进行登录.
// 2. 如果使用的是本地数据库且定义了实例名,则可以写为"Server=(local)\实例名";如果是远程服务器,则将"(local)"替换为远程服务器的名称或IP地址.
string strConnection = "Trusted_Connection=SSPI;";
strConnection += "database=NTF_Navision_enlistment60;Server=CAIXIATA-6BE823;";
strConnection += "Connect Timeout=30";


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/LCL_data/archive/2009/04/30/4139145.aspx
liuxiaoyun 2009-06-10
  • 打赏
  • 举报
回复
检查连接字符串

major 2009-06-10
  • 打赏
  • 举报
回复
或者Data Source=.\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True
major 2009-06-10
  • 打赏
  • 举报
回复
用Data Source=BOBO\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True
sforiz 2009-06-10
  • 打赏
  • 举报
回复
string mycon = "Data Source=BOBO/SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
建议检查这句话,标点,字母,
要不加上密码和登录用户
wuyq11 2009-06-10
  • 打赏
  • 举报
回复
Data server=.\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa
Data server=服务器名\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password= sa
Data server=localhost\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password= sa

<connectionStrings>
<add name="ConnectionSqlServer"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa" providerName="System.Data.SqlClient"/>
</connectionStrings>


Adechen 2009-06-10
  • 打赏
  • 举报
回复
Data Source=BOBO/SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
BOBO是你的机器名吗?如果不是。清改为你的机器名试下

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧