网页无法连接到SQL Server数据库

ScytheV 2009-08-05 03:27:19
我的数据库:SQL Server Express 2005(实例名SQLExpress)
我的系统:Windows Vista
浏览器:IE6以上,Firefox

问题描述:
在项目的web.config文件中设置如下:
<connectionStrings>
<add name="BD_TestConnectionString" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=BD_Test;Integrated Security= True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="constr" value="Server=localhost;Database=BD_Test; Integrated Security = SSPI"/>
</appSettings>

MapPage.aspx.cs中关于数据库连接的段落:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString();
conn.Open();

在浏览器中输入:http://127.0.0.1/mgis/Mappage.aspx
提示如下:
“/mgis”应用程序中的服务器错误。
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

源错误:

行 22: SqlConnection conn = new SqlConnection();
行 23: conn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString();
行 24: conn.Open();
行 25: string commandText = "Select bound ,name from SX_MapPath where isSelected = 1";
行 26: SqlDataReader dr = SqlHelper.ExecuteReader(conn, CommandType.Text, commandText);


源文件: c:\inetpub\wwwroot\mgis\MapPage.aspx.cs 行: 24

补充说明:
1,我已经从sql server的外围设置中把连接方式设置成Tcpip+namepipe了;
2,浏览器用管理员身份启动;
3,已从IIS管理中把mgis目录转换成应用程序。

这个问题已经困扰我两天了,还望大家不吝赐教。
...全文
703 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rollthewong 2009-08-06
  • 打赏
  • 举报
回复
这个问题我自己解决了,下面把解决方法共享出来,希望能帮到别人:
解决方案:
这个问题让我头疼了两天,从网上只找到一种解决方法,是这样的:
解决方法:开始->>SQLServer2005->>配置工具->>SQLServer外围应用配置器->>服务和外围连接的应用配置器->>点击"远程连接"->>本地连接

和远程连接->>同时使用TCP/IP和named Pipes->>点"确定"->>重启SQLserver服务
我按照这个来做了,问题还是没有得到解决。
然后我一直在尝试着改动web.config中的连接字符串。
web.config中的数据库连接部分一开始是这样的:
<connectionStrings>
<add name="BD_NingboConnectionString" connectionString="Data Source=LENOVO-E28F4EA9;Initial

Catalog=BD_Ningbo;Integrated Security= True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="constr" value="Server=localhost;Database=BD_Ningbo; Integrated Security = SSPI"/>
</appSettings>
然后我将connectionString中改成的Data Source=(local)\SQLEXPRESS(我的数据库实例名),还是不行,然后又试了(local),Shreg\SQLEXPRESS,

SQLEXPRESS等,均无果。
然后尝试修改appSettings中的内容,将Server=localhost改成Data Source=(local)\SQLEXPRESS,再运行,错误提示如下:
“/mgis”应用程序中的服务器错误。
拒绝了对对象 'SX_MapPath' (数据库 'BD_Ningbo',架构 'dbo')的 SELECT 权限。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 拒绝了对对象 'SX_MapPath' (数据库 'BD_Ningbo',架构 'dbo')的 SELECT 权限。
源错误:
行 802: if (mustCloseConnection)
行 803: connection.Close();
行 804: throw;
行 805: }
行 806: }
源文件: c:\inetpub\wwwroot\mgis\App_Code\SqlHelper.cs 行: 804
明显是权限的问题。于是我试着用管理员身份来运行浏览器,无果。然后打开SQL Server Management Studio Express,把BD_Ningbo的所有用户

都赋予最大权限,终于可以打开MapPage.aspx了。
SK_Aqi 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 scythev 的回复:]
引用 4 楼 sk_aqi 的回复:
开始-->sql 2005-->Configuration tool-->sql server surface area Configuration
Remote Connections配置
不要选择Local connections only.用: Using both TCP/IP and named pipes


哥们儿,回帖要看贴。
[/Quote]

rollthewong 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sk_aqi 的回复:]
开始-->sql 2005-->Configuration tool-->sql server surface area Configuration
Remote Connections配置
不要选择Local connections only.用: Using both TCP/IP and named pipes
[/Quote]

哥们儿,回帖要看贴。
7年 2009-08-05
  • 打赏
  • 举报
回复
既然楼主用的(local),那么楼上的方法就不能解决问题。个人见解。
SK_Aqi 2009-08-05
  • 打赏
  • 举报
回复
开始-->sql 2005-->Configuration tool-->sql server surface area Configuration
Remote Connections配置
不要选择Local connections only.用: Using both TCP/IP and named pipes
rollthewong 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bigmingming 的回复:]
看看1433端口开放了吗
[/Quote]

不过数据库引擎肯定是没问题的,我用SQL Server Management Studio Express可以连接上。
rollthewong 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bigmingming 的回复:]
看看1433端口开放了吗
[/Quote]

我用netstat -an只看到UDP的1434端口,后面没有Listening也没有Established.
bigmingming 2009-08-05
  • 打赏
  • 举报
回复
看看1433端口开放了吗

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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