SQL Server 2005在连接到在同一服务器上运行的网站时遇到问题
建立与服务器的连接时发生错误。连接到SQL Server 2005时,此故障可能是由于以下事实导致的:在默认设置下,SQL Server不允许远程连接。 (提供者:命名管道提供程序,错误:40无法打开与SQL Server的连接)
我们好,我是开发SQL Server 2005的新手。我已经使用SQL Server 2000多年了,但是在做完通常的工作之后,我确实连接到服务器,但在Web服务器上却遇到此异常。
google上有几个链接为我指出了可能的解决方案,但没有一个解决了我的问题。我已经在"无论什么情况下都具有Surface Area"对话框上进行了更改(这到底是什么?为什么SQL Server更改了这么多?现在看起来如此复杂)。
我已确保正确配置SQL Server 2005,以允许数据库服务器实例上的传入连接。我还选择了"自动"作为启动类型,以在每次系统启动时自动启动SQL Server Browser服务。不,没有防火墙在运行。
我尝试更改连接字符串以使用端口进行连接,使用IP进行连接,使用实例名称进行连接...
似乎没有任何反应,我仍然遇到相同的错误。有什么提示吗?
回答人们提出的问题:
是的,我可以使用Management Studio从另一台计算机进行连接。
是的,我确定它已配置为接受本地和远程TCP / IP以及命名管道。
是的,我重新启动了服务器。
我正在使用已经启用的混合模式安全性。我已经启用了sa用户。
我可以使用.udl文件连接到数据库,并且已经检查我的连接字符串是否正确。我可以使用DBArtisan和SQL Server客户端工具连接到数据库。我既可以在服务器上也可以在另一台机器上做到这一点。即使如此...
该网站仍然无法连接。
新更新...
我整天都在为这个问题而苦苦挣扎,但仍然没有找到原因。看来,我发布的错误消息是.net在无法连接时给出的一般错误。我在连接字符串上放置了垃圾桶(键入不存在的服务器),但仍然收到相同的错误。
这些是我在服务器上使用过的一些连接字符串:
" connectionString ="集成安全性= SSPI;数据源= SERVER;初始目录= db;网络库= DBMSSOCN;"
connectionString =" Data Source = SERVER;初始目录= db;用户ID = sa;密码= xxxxx;"
connectionString =" Data Source = SERVER \ MSSQLSERVER;初始目录= db;用户ID = sa;密码= xxxxx;"
我尝试使用一些奇怪的命令注册sql服务器实例,在这里发现:
http://kb.discountasp.net/article.aspx?id=1041
为此,我使用了aspnet_regsql.exe工具。它仍然无法正常工作...
我也知道服务器上安装了最新版本的MDAC。我唯一可疑的是服务器具有两个数据库引擎:SERVER和server \ sqlexpress
这与问题有关吗?
解决方案
回答
我们可以从其他计算机通过Management Studio连接到SQL Server吗?这可能有助于我们缩小是SQL Server配置还是连接字符串配置。
回答
重新检查表面积配置,并确保允许TCP / IP连接。
回答
这可能是很多事情。我要检查的第一件事是确保我们可以使用SQL Server Management Studio连接到服务器。其次,检查连接字符串以确保它是正确的。外围区域配置不应应用于本地连接。
回答
尝试在服务器上重新安装最新的MDAC。我曾经有一个类似的问题,这解决了它。
[http://www.microsoft.com/downloads/details.aspx?familyid=6c050fe3-c795-4b7d-b037-185d0506396c&displaylang=zh-CN][1]
回答
基于该错误,代码似乎正在尝试使用命名管道而不是TCPIP进行连接。我们实际上可能需要在连接字符串中特别指出sql提供程序应使用tcpip进行连接,因此连接字符串应如下所示。
使用集成身份验证(Windows):
集成安全性= SSPI;数据源= SERVERNAME;初始目录= DATABASENAME;网络库= DBMSSOCN;
使用SQL身份验证:
UID = USERNAME; PWD =密码;数据源= SERVERNAME;初始目录= DATABASENAME;网络库= DBMSSOCN;
我之前已经看到类似的情况,由于某种原因,默认情况下将"命名管道"用作传输/连接层,特别是因为Web应用程序和sql服务器都在同一台计算机上运行。我通常总是将tcpip用作传输或者网络库。
另一种故障排除技术是使用UDL(或者数据链接文件)对连接进行故障排除。这使我们可以在连接提供程序(ODBC,OLEDB等)之间切换并设置其他连接选项。
- 在计算机的桌面上,右键单击并选择新建->文本文档。
- 将* .txt文件重命名为TestConnect.udl(名称无所谓,只需扩展名为.udl)即可。我们应该看到图标从文本文件图标更改为在数据网格顶部显示计算机的图标,或者类似的图标(换句话说,窗口应该有图标)。
- 现在双击该文件,我们将看到一个"数据链接属性"小程序。
- 单击提供程序选项卡,我们将看到其他连接提供程序的列表。我首先选择"用于SQL Server的Microsoft OLE DB提供程序"。我们可以使用它来确认OLE DB是否可以连接。
- 单击下一步,然后输入服务器名称或者IP地址。选择" Windows NT集成安全性"。 (我们随时可以回来并更改它以使用sql登录。)此时,我们可以单击"测试连接"。如果连接成功,则从下拉列表中选择一个数据库名称。
- 最后,如果连接失败,请选择"所有"选项卡,然后查找"网络库"并编辑其值,将其设置为" DBMSSOCN"。
- 返回连接选项卡,然后再次单击"测试连接"。
- 这次选择" SQL Native Client",重复步骤4和5.
希望这可以帮助。
回答
在提示符下执行:
osql -E -S
...让我们>提示?
回答
我们是否尝试在连接字符串中指定实例名称?显然,尤其是sql server express,对具有实例名称很挑剔。
我也已经开始研究SQL Server配置管理器。因此,我们是否单击" SQL Server 2005网络配置",然后查看" InstanceName的协议"?我们启用了TCP / IP和命名管道?
我们是否还查看了" SQL本机客户端配置"->"客户端协议",是否还在那里启用了TCP / IP和命名管道?
使用SQL Server 2005外围应用配置器工具,单击"服务和连接的外围应用配置器",然后在"数据库引擎"->"远程连接"下选择什么?由于我们似乎正在尝试使用命名管道进行连接,因此需要确保选择了"本地和远程连接"以及"同时使用tcp / ip和命名管道"。
如我们所知,一旦进行了任何更改,就必须通过Management Studio停止并重新启动sql服务器实例(我们不需要重新启动整个计算机,尽管重新启动整个计算机将使我们到达那里)。
还有我的最后一条建议。暂时离开它,几分钟,然后将其移开。当我们重新潜水时,我们可能会发现以前错过或者遗忘的东西。
回答
The only thing that I'm suspicious on is that the server has two Database engines: SERVER and server\sqlexpress
我认为这是问题的根源。我们打算连接哪一个?我们需要指定要连接的"实例"。
假设我们打算连接到SERVER实例,那么连接字符串应如下所示(假定默认实例名称):
数据源= YOURSERVER \ MSSQLSERVER;初始目录= db;用户ID = sa;密码= xxxxx;
或者为sql表示连接字符串如下所示:
数据源= YOURSERVER \ sqlexpress;初始目录= db;用户ID = sa;密码= xxxxx;
回答
我解决了与连接有关的问题。问题出在我的应用程序上。造成此问题的原因是,到开发数据库(而不是生产数据库)的连接字符串由生成数据集的对话框之一硬编码。此对话框将连接字符串放置在web.config和称为" Settings.settings.cs"的隐藏源代码文件中。通过将连接字符串固定在正确的位置可以解决该问题。
该错误消息是完全令人误解的,但是通过遵循堆栈跟踪中介绍的所有方法,我能够找到该错误消息。
因此,如果我们找到此错误消息,则有很多可能的原因。第一个选择是遵循此错误的通常步骤,这些步骤是检查服务器是否允许远程和本地连接,然后重新启动浏览器服务。
如果那不起作用,请检查堆栈跟踪,查找应用程序中的代码,在其中放置一个断点,并浏览连接字符串上的所有属性。至少这就是我解决的方法。