200求救:解决System.Data.SqlClient.SqlException: SQL Server 不存在或访问被拒绝。

com_gao 2003-09-03 08:46:51
System.Data.SqlClient.SqlException: SQL Server 不存在或访问被拒绝。

2003-09-03 08:03:08 com_gao(52022920)
有谁了解sql....我很郁闷。
所有连接sql的操作都不成功!!!
winserver2000...+sqlserver2000...+iis5...
+vs.net...
我使用.net(中文)自带的例子都通不过。说找不到sql服务器...有没有人遇到过类似的。我第一接触mssqlserver2000...的编程

2003-09-03 08:04:05 DemonHunter(76763831)
sql服务打开没?

2003-09-03 08:04:16 com_gao(52022920)
打开了

2003-09-03 08:04:52 DemonHunter(76763831)
用服务管理器刷新一下

2003-09-03 08:05:28 com_gao(52022920)
Microsoft .NET Framework SDK 快速入门、教程和示例

这里的例子,你也装了吧,与数据库的操作就不通过

2003-09-03 08:05:57 DemonHunter(76763831)
我看看

2003-09-03 08:07:08 DemonHunter(76763831)
找不到~~~

2003-09-03 08:07:41 com_gao(52022920)
你装了.net环境了没有

2003-09-03 08:08:04 DemonHunter(76763831)

我说找不到数据库操作的例子

2003-09-03 08:08:18 com_gao(52022920)
就在asp.net快速入门

2003-09-03 08:08:35 com_gao(52022920)
然后找 ASP.NET Web 窗体

2003-09-03 08:08:47 DemonHunter(76763831)
ok

2003-09-03 08:09:04 com_gao(52022920)
服务器端数据访问
目录里,随便找个例子运行一下

2003-09-03 08:10:13 DemonHunter(76763831)
我的可以啊

2003-09-03 08:10:30 com_gao(52022920)
阿?我的数据库的问题????

2003-09-03 08:10:51 DemonHunter(76763831)
应该是吧

2003-09-03 08:10:51 com_gao(52022920)
http://localhost/quickstart/aspplus/samples/webforms/customize/VB/datalist1.aspx
你打这个例子

2003-09-03 08:11:20 com_gao(52022920)
错误是:[SqlException: SQL Server 不存在或访问被拒绝。]


2003-09-03 08:11:52 DemonHunter(76763831)
我的可以显示那个藏书室

2003-09-03 08:12:42 com_gao(52022920)
你的sql设密码了没?

2003-09-03 08:12:47 DemonHunter(76763831)


2003-09-03 08:13:06 com_gao(52022920)
你的sql默认的用户是sa把?

2003-09-03 08:13:11 DemonHunter(76763831)


2003-09-03 08:13:51 com_gao(52022920)
你安装的时候选择的是用系统用户登录还是sql和系统混和登录

2003-09-03 08:14:09 DemonHunter(76763831)
后者

2003-09-03 08:14:20 com_gao(52022920)
我也是阿

2003-09-03 08:14:27 DemonHunter(76763831)
y ....

2003-09-03 08:14:42 DemonHunter(76763831)
你有权限没?

2003-09-03 08:14:52 com_gao(52022920)
问题在那???????


我用的是administrator..

2003-09-03 08:14:59 com_gao(52022920)
登录

2003-09-03 08:15:32 DemonHunter(76763831)
不懂~
...全文
365 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
com_gao 2003-09-03
nboys的意思我明白,但是我使用的都是微软的例子代码。。。应该也不会出错把
回复
com_gao 2003-09-03
回 tj_dns(愉快的登山者) :ping 没问题。port 是1433
回复
com_gao 2003-09-03
pengdali的方法我都试过..不能解决!
数据库启动连接.ping telnet..没有出现问题;
错误依然出现。不过我在排除sql出错的可能性!
aspx的环境可能有问题!我使用的是vs.net...不是..纯.net环境。。
但问题怎么解决依然不知!!郁闷。感谢pengdali !

“/QuickStart/ASPPlus”应用程序中的服务器错误。
--------------------------------------------------------------------------------

SQL Server 不存在或访问被拒绝。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: SQL Server 不存在或访问被拒绝。
回复
nboys 2003-09-03
MasterChild.aspx

<%@Page Language="VB" Inherits="BaseClass" Src="MasterChild.vb" %>
<html>
<head>
<title>DataGrid Samples - Step 3</title>
</head>
<body>
<h1> Master Child Example </h1>
<form runat=server>
<table width="95%">
<tr>
<td valign="top">
<b>Authors:</b><br>
<asp:DataGrid id="authorsGrid" runat="server"
AutoGenerateColumns="false"
BackColor="White"
BorderWidth="1px" BorderStyle="Solid" BorderColor="Tan"
CellPadding="2" CellSpacing="0"
Font-Name="Verdana" Font-Size="8pt"
DataKeyField="au_id"
OnSelectedIndexChanged="Grid_Select"
>
<Columns>
<asp:ButtonColumn Text="Select" CommandName="Select"/>
<asp:BoundColumn HeaderText="ID" DataField="au_id">
<HeaderStyle Width="100px"> </HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn HeaderText="Name" DataField="au_name">
<HeaderStyle Width="150px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn HeaderText="State" DataField="state">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
<HeaderStyle BackColor="DarkRed" ForeColor="White" Font-Bold="true">
</HeaderStyle>
<ItemStyle ForeColor="DarkSlateBlue">
</ItemStyle>
<AlternatingItemStyle BackColor="Beige">
</AlternatingItemStyle>
<SelectedItemStyle BackColor="PaleGoldenRod" Font-Bold="true">
</SelectedItemStyle>
</asp:DataGrid>
</td> <vr>
<td valign="top">
<asp:Panel id="detailsPanel" runat="server" Visible="false">
<table border="0" cellspacing="0" cellpadding="2" width="100%"
style="font-family: verdana; font-size: 8pt">
<b>Titles:</b><br>
<td colspan="2">
<asp:DataGrid id="titlesGrid" runat="server"
AutoGenerateColumns="false"
ShowFooter="true"
BackColor="White"
BorderWidth="1px" BorderStyle="Solid" BorderColor="Tan" CellPadding="2" CellSpacing="0"
Font-Name="Verdana" Font-Size="8pt"
>
<Columns>
<asp:BoundColumn HeaderText="ID" DataField="title_id">
<HeaderStyle Width="100px">
</HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn HeaderText="Title" DataField="title">
<HeaderStyle Width="250px">
</HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn HeaderText="Published" DataField="pubdate" DataFormatString="{0:MMM yyyy}">
<HeaderStyle Width="100px">
</HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn HeaderText="Price" DataField="price" DataFormatString="{0:c}">
<HeaderStyle Width="50px">
</HeaderStyle>
<ItemStyle HorizontalAlign="Right">
</ItemStyle>
</asp:BoundColumn>
</Columns>
<HeaderStyle BackColor="DarkRed" ForeColor="White" Font-Bold="true">
</HeaderStyle>
<FooterStyle BackColor="Tan">
</FooterStyle>
<ItemStyle ForeColor="DarkSlateBlue">
</ItemStyle>
<AlternatingItemStyle BackColor="Beige">
</AlternatingItemStyle>
</asp:DataGrid>
</td>
</tr>
</table>
</asp:Panel>
</td> </tr>
</table>
</form>
</body>
</html>
回复
nboys 2003-09-03
MasterChild.vb

Imports System
Imports System.Collections
Imports System.Text
Imports System.Data
Imports System.Data.OleDb
Imports System.Web.UI
Imports System.Web.UI.WebControls

Public Class BaseClass
Inherits System.Web.UI.Page
Protected AuthorsGrid as DataGrid
protected titlesGrid as DataGrid
protected detailsPanel as Panel
Public currentAuthor as object
Dim myConnection As OleDbConnection
Dim myCommand As OleDbDataAdapter
Dim ds As New DataSet
Dim ConnStr As String
Dim SQL As String
Sub Page_Load(Source As Object, E As EventArgs)
ConnStr = "Provider=SQLOLEDB; Data Source=serverName; Initial Catalog=pubs;User ID=sa;PWD=pwd"
myConnection = New OleDbConnection(ConnStr)
if NOT (isPostBack)
rebind
end if
End Sub
Sub FillDs
sql = " select * , au_lname + ',' + au_fname as au_name"
sql = sql + " From authors a, titles t, titleauthor ta"
sql = sql + " Where a.au_id = ta.au_id AND t.title_id = ta.title_id"
myCommand = New OleDbDataAdapter(SQL, myConnection)
'use Fill method of DataSetCommand to populate dataset
myCommand.Fill(ds, "Authors")
end Sub
Sub ReBind()
FillDs
'Binding a Grid
AuthorsGrid.DataSource=ds.Tables("Authors").DefaultView
AuthorsGrid.DataBind()
End Sub
'
Sub Grid_Select(sender as Object , e as EventArgs)
Dim vIndex As Integer
Dim vkey as string
vIndex = AuthorsGrid.SelectedIndex
vkey =AuthorsGrid.DataKeys(vIndex).ToString
UpdateSelection(vkey)
end sub
Sub UpdateSelection(vkey as string)
Dim myConnection2 As OleDbConnection
Dim myCommand2 As OleDbDataAdapter
Dim ds2 As New DataSet
Dim ConnStr2 As String
Dim SQL2 As String
Dim itemcount As Integer
sql2 = " select * , au_lname + ',' + au_fname as au_name"
sql2 = sql2 + " From authors a, titles t, titleauthor ta"
sql2 = sql2 + " Where a.au_id = ta.au_id AND t.title_id = ta.title_id"
sql2 = sql2 + " AND a.au_id = '" + vkey + "'"
myCommand2 = New OleDbDataAdapter(SQL2, myConnection)
myCommand2.Fill(ds2, "Authors")
'Bind the Grid
titlesGrid.DataSource=ds2.Tables("Authors").DefaultView
titlesGrid.DataBind()
itemcount = titlesGrid.Items.Count
if itemcount >= 1 then
detailsPanel.Visible = true
Else
detailsPanel.Visible = false
response.write("No rows found")
end if
End sub
End Class
回复
txlicenhe 2003-09-03
也许是前台的连接语句有问题,贴出来看看。
回复
txlicenhe 2003-09-03
也许是连接代码的问题,贴出来看看。
回复
1。服务器是否能够PING通;
2。连接数据库的PORT号是否正确。
回复
pengdali 2003-09-03
采用window验证,两台win2000的机子,甲机可以访问乙机的数据库,而乙机在连接甲机时显示“用户null登录失败,原因未与信任连接相关联”,当采用sql验证时,显示用户“sa”登录失败,我在看了一篇文章后,还是不能解决问题,



  下面我们依次介绍如何来解决这三个最常见的连接错误。

  第一个错误"SQL Server 不存在或访问被拒绝"通常是最复杂的,错误发生的原因比较多,需要检查的方面也比较多。一般说来,有以下几种可能性:

  1、SQL Server名称或IP地址拼写有误;

  2、服务器端网络配置有误;

  3、客户端网络配置有误。

  要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因。

  首先,检查网络物理连接:

   ping <服务器IP地址>
 
  或者

   ping <服务器名称>

  如果 ping <服务器IP地址> 失败,说明物理连接有问题,这时候要检查硬件设备,如网卡、HUB、路由器等。还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server。防火墙软件可能会屏蔽对 ping、telnet 等的响应,因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口。

  如果ping <服务器IP地址> 成功而 ping <服务器名称> 失败,则说明名字解析有问题,这时候要检查 DNS 服务是否正常。有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,具体的方法是:

  1、使用记事本打开HOSTS文件(一般情况下位于C:\WINNT\system32\drivers\etc).

  2、添加一条IP地址与服务器名称的对应记录,如:

    172.168.10.24 myserver

  也可以在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明。

  其次,使用 telnet 命令检查SQL Server服务器工作状态:

   telnet <服务器IP地址> 1433

  如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接;如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务,也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听。

  接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道,是否启用了 TCP/IP 协议等等。我们可以利用 SQL Server 自带的服务器网络使用工具来进行检查。

  点击:程序 -> Microsoft SQL Server -> 服务器网络使用工具,打开该工具后看到的画面如下图所示:

  


  从这里我们可以看到服务器启用了哪些协议。一般而言,我们启用命名管道以及 TCP/IP 协议。

  点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置,如下图所示:

  




  一般而言,我们使用 SQL Server 默认的1433端口。如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接。

  检查完了服务器端的网络配置,接下来我们要到客户端检查客户端的网络配置。我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,所不同的是这次是在客户端来运行这个工具。

  点击:程序 -> Microsoft SQL Server -> 客户端网络使用工具, 打开该工具后看到的画面如下图所示:

  


  从这里我们可以看到客户端启用了哪些协议。一般而言,我们同样需要启用命名管道以及 TCP/IP 协议。

  点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,如下图所示。

  


  该端口必须与服务器一致。

  单击"别名"选项卡,还可以为服务器配置别名。服务器的别名是用来连接的名称,连接参数中的服务器是真正的服务器名称,两者可以相同或不同。如下图中,我们可以使用myserver来代替真正的服务器名称sql2kcn-02,并且使用网络库 Named Pipes。别名的设置与使用HOSTS文件有相似之处。

  




  通过以上几个方面的检查,错误 1 发生的原因基本上可以被排除。下面我们再详细描述如何来解决错误 2。

  当用户尝试在查询分析器里面使用sa来连接SQL Server,或者在企业管理器里面使用sa来新建一个SQL Server注册时,经常会遇到如图 2 所示的错误信息。该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示:

  1、 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server;

  2、 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡;

  3、 在"身份验证"下,选择"SQL Server和 Windows "。

  4、 重新启动SQL Server服务。

  在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败,那么我们将遇到一个两难的境地:首先,服务器只允许了 Windows 的身份验证;其次,即使使用了 Windows 身份验证仍然无法连接上服务器。这种情形被形象地称之为"自己把自己锁在了门外",因为无论用何种方式,用户均无法使用进行连接。实际上,我们可以通过修改一个注册表键值来将身份验证方式改为 SQL Server 和 Windows 混合验证,步骤如下所示:

  1、点击"开始"-"运行",输入regedit,回车进入注册表编辑器;

  2、依次展开注册表项,浏览到以下注册表键:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]

  3、在屏幕右方找到名称"LoginMode",双击编辑双字节值;

  4、将原值从1改为2,点击"确定";

  5、关闭注册表编辑器;

  6、重新启动SQL Server服务。

  此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册,但是仍然无法使用Windows身份验证模式来连接SQL Server。这是因为在 SQL Server 中有两个缺省的登录帐户:BUILTIN\Administrators 以及 <机器名>\Administrator 被删除。要恢复这两个帐户,可以使用以下的方法:

  1、打开企业管理器,展开服务器组,然后展开服务器;

  2、展开"安全性",右击"登录",然后单击"新建登录";

  3、在"名称"框中,输入 BUILTIN\Administrators;

  4、在"服务器角色"选项卡中,选择"System Administrators" ;

  5、点击"确定"退出;

  6、使用同样方法添加 <机器名>\Administrator 登录。

  以下注册表键

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode

  的值决定了SQL Server将采取何种身份验证模式。该值为1,表示使用Windows 身份验证模式;该值为2,表示使用混合模式(Windows 身份验证和 SQL Server 身份验证)。

  看完如何解决前两个错误的方法之后,让我们来看一下如图 3 所示的第三个错误。

  如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,不过是由于连接的时间大于允许的时间而导致出错。这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,并且是慢速连接时,有可能会导致以上的超时错误。有些情况下,由于局域网的网络问题,也会导致这样的错误。

  要解决这样的错误,可以修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因)。具体步骤为:

  1、在企业管理器中,选择菜单上的"工具",再选择"选项";

  2、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡;

  3、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 20。

  查询分析器中也可以在同样位置进行设置。
回复
yujohny 2003-09-03
UP
回复
liuyun2003 2003-09-03
啊,又晕一次。
回复
liuyun2003 2003-09-03
啊,又晕一次。
回复
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2003-09-03 08:46
社区公告
暂无公告