尝试连接到SQL Server时出现以下错误:
无法连接到108.163.224.173 . Build 与SQL Server的连接时发生与网络相关或特定于实例的错误 . 服务器未找到或无法访问 . 验证实例名称是否正确,以及SQL Server是否配置为允许远程连接 . (提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)(Microsoft SQL Server,错误:1326)
当我尝试在Visual Studio 2010中将数据库配置为gridview时抛出此错误 . 我对如何调试此错误感到茫然 .
你会如何调试此错误?除了错误消息中提到的那个之外,我应该采取哪些步骤来确定这里真正发生的事情?
30 回答
我得到了解决方案:
它会工作......
您可以测试以下方法 .
在中间选项卡中找到“本地端口”为1433的记录,如果找不到,请尝试使用以下级别创建它
在“开始”菜单中,单击“运行”,键入'WF.msc',然后单击“确定”
在左侧面板中单击'Windows Firewall with Advanced Security'
在右侧面板中,右键单击'Inbound Rules',然后单击'New Rule'
在“规则类型”对话框中,选择'Port',然后单击“下一步”
在“协议和端口”对话框中,选择'TCP',然后选择'Specific Local Ports',然后键入端口号1433,单击“下一步” .
在“操作”对话框中,选择“允许连接”,然后单击“下一步”
在'Profile'对话框中,检查域,私有和公共,然后单击下一步
在'Name'对话框中,键入'SQL 1433 Port',并为自己的描述写入描述 . 然后单击Finish
我通过打开 Services 解决了这个问题,然后开始运行 Sql Server (Sqlexpress) 服务 .
Summary
要解决运行本地应用程序与远程数据库时遇到的此问题,请使用SQL Server配置管理器为远程数据库添加别名 .
Details
我最近在从Windows 7转换到Windows 10笔记本电脑时遇到了这个问题 . 我正在运行一个本地开发和运行时环境,在远程服务器上访问我们的Dev数据库 . 我们通过SQL Server客户端网络实用程序(cliconfg.exe)通过服务器别名设置访问Dev数据库 . 在确认在64位和32位版本的实用程序中正确设置别名并且数据库服务器可通过SSMS从新笔记本电脑访问后,我仍然看到OP看到的错误(不是OP的IP地址,课程) .
必须使用SQL Server配置管理器为远程开发人员数据库服务器添加别名 . 修正了事情 .
我必须将 SQL Server Browser 服务运行到 SQL Server Configuration Manager . 没有这个,安装无法发现新创建的服务 .
我遇到了同样的问题,问题是我在解决方案中有几个项目(
Web
和Droid
),即使在Package Manager Console
中选择了Default project
,它也使用了Droid
项目中的连接字符串:将
Startup Project
设置为Web
并将Default Project
设置为Package Manger Console
后,我开始工作了 .除了尝试Teo Chuen Wei Bryan建议的所有内容外,请确保您还在连接字符串中引用了正确的服务器/实例名称 .
如果您在数据库服务器或web.config文件中使用简短形式的主机名/实例,请确保使用 fully qualified domain name(FQDN)/Instance
此外,要测试不存在SQL Server客户端的服务器的连接,
希望这可以帮助 .
此错误主要发生在SQL服务停止时 . 您需要重新启动服务 . 要转到此窗口,您必须搜索此类服务 -
然后搜索SQLSERVER(MSSQLSERVER)并重新启动该服务 .
希望这会奏效 .
我在这个问题上尝试了所有其他答案,如果不是全部可能在我的工作中起到了作用,但我仍然无法远程连接到数据库 . 我在Azure VM上使用SQL Server .
我最终记得VM有 endpoints 由Azure帐户代理控制,所以我继续使用Azure门户并添加了1433作为可用 endpoints ,我可以连接到我的SQL实例 .
希望这可以帮助那些已经尝试过所有其他答案且仍然没有运气的人!
虽然上述解决方案应该在90%的情况下有效,但如果你还在阅读这个答案!您可能正在尝试连接到不同于预期的服务器 . 这可能是由于配置文件指向的是与您认为要连接的实际服务器不同的SQL服务器 .
至少发生在我身上 .
如果您在 生产环境 环境中突然遇到此错误,并且没有任何更改,请按以下顺序尝试以下4项,以查看是否已修复 .
重启sql server服务 .
重启调用sql server的服务(比如说IIS) . (问题可能在这里,如果从SQL服务器的服务调用开始到最终得到响应错误的时间之间的时间超短(大约一秒或两秒) .
重启服务器sql server是否开启 .
重启服务器,呼叫服务已打开 .
当您的SQL Server实例是
stopped
时,会发生此错误 .转到所有程序> SQL Server>配置工具> SQL SERVER CONFIGURATION MANAGER
然后单击SQL sERVER SERVICES,将出现实例列表,选择有问题的实例并单击顶部工具栏上的播放图标,希望这会有所帮助 .
这个答案很晚(但迟到总比没有好;)
我想你正在使用Express Edition
尝试将
"\SQLEXPRESS"
添加到您的服务器名称例如
"MY-SERVER\SQLEXPRESS"
按
window + R (Run window Open)
并在运行窗口中键入"services.msc"
并打开新服务查找SQL SERVER(SQLEXPRESS)
服务启动并再试一次它对我有用希望它的工作也适合你 .如果以上解决方案都不起作用(对我没用),那么只需重新启动计算机,就可以连接到sql server(localhost) .
此解决方案还解决了网络错误和sql server背后的服务
我在这里回答了类似的问题,你需要统计另一个
open Run type-> services.msc
- 在服务 - > sort by stopped 你会看到一堆已停止的SQL服务Right click and start
首先 - 在您开始之前,有4个问题可能导致 common LocalDb SqlExpress Sql Server connectivity errors
SQL Network Interfaces, error: 50 - Local Database Runtime error occurred
need to rename the v11 or v12 to (localdb)\mssqllocaldb你没有services running
您没有配置firelwall ports here
您的安装有并且发出/损坏(以下步骤可以帮助您开始干净利落)
你没有rename the V11 or 12 to mssqllocaldb
我发现最简单的是做下面的事情 - 我附上了图片和步骤以寻求帮助 .
首先验证您已安装的实例,您可以通过 checking the registry 和 by running cmd 执行此操作
cmd> Sqllocaldb.exe i
cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"
如果此步骤失败,您可以使用选项d
cmd删除> Sqllocaldb.exe d "someDb"cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"
做完这里提到的一切之后:
http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server-microsoft-sql-server-error/仍然没有为我工作 .
步骤对我有用:
Start > Run > cmd > sqlcmd -L
它会提示您服务器名称 . 确保此服务器名称与SQL管理工作室的CONNECT TO SERVER框中尝试连接的服务器名称相同 .
我犯了这个愚蠢的错误,我继续使用
MSSQLSERVER
而不是使用这个服务器名称 .希望这对像我这样犯愚蠢错误的人有所帮助 .
谢谢 .
我从Windows 7上的工作笔记本电脑转移到Windows 10上的工作笔记本电脑 . 我已成功在Windows 7上使用SSMS2016 .
使用SSMS2012或SSMS2016应用相同的问题 . 我使用Windows身份验证访问10个sql服务器仍然是相同的 . 我可以从另一台服务器测试这个 . 但是, 2 of the 10 servers would not connect from my laptop . 两者都是ms sql server 9但我可以连接到其他sql server 9数据库 .
解决方案是 add a firewall rule (使用具有高级安全性的Windows防火墙) .
为每个SSMS创建传入规则,例如C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe
我不是网络专家,所以我没有包括细节,但希望它会指出你正确的方向 .
错误消息(防火墙前规则)“ Build 与SQL Server的连接时发生与网络相关或特定于实例的错误 . 未找到服务器或无法访问服务器 . 验证实例名称是否正确以及SQL Server是否已配置为允许远程连接 . (提供程序:SQL网络接口,错误:26 - 错误定位指定的服务器/实例)( . Net SqlClient数据提供程序)“
当我尝试将服务器从 IIS Express 更改为 Local IIS (使用 LocalDB 时)时,我的问题就开始了 .
我正在使用LocalDB(用于开发目的),当我从本地IIS恢复到IIS Express时,Visual Studio已将我的数据源从 Data Source=(LocalDb)\MSSQLLocalDB 切换到 Data Source=.\SQLEXPRESS
Incorrect connection string
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
Correct connection string
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True" providerName="System.Data.SqlClient" />
希望这有助于那里的人 .
我的问题是你需要在 both 你的存储库层和web层中有一个连接字符串条目 . 一旦我将其添加到我的web.config as well as my app.config,Entity Framework就能够创建迁移 .
我的问题是,为什么web.config需要它,当时完全没有数据库访问权限 .
为什么这个错误是如此的boresome和嘈杂,只是因为它可以发生在各种情况下 .
I have done all approchs above here, and still being sucked. So make sure u have done the same as me before browsing downward.
也许我无法立即解决你的情况, but I can point out a direction or thinking to u (终于在这里滑下来的人) . 在确定实例名称明确正确并将数据库设置为允许按照上述方法进行远程控制之后,我开始思考正在运行的程序的错误 . 之后, I suspected something wrong happening in my code snippet of SQL connection.
解决我的问题:
它适用于我思考在连接过程中究竟发生了什么 . 希望我的想法将导致你杀死你的错误 .
看来你的localdb实例没有运行 . 要在计算机启动时启动它,请使用以下行添加到“开始”菜单\“启动”文件夹BAT文件中
其中
name_of_instance
是您要启动的localdb实例的名称 . 您可以使用sqllocaldb i
在命令行中列出可用实例 .例如如果您正在使用SQL Server Management Studio并连接到服务器名称
(localdb)\v11.0
,那么您的BAT文件将如下所示首先是允许远程连接到SQL Server . 我所做的是在开始菜单中键入 sqlservermanager13.msc 以打开SQL Server配置管理器 . 确保已启用TCP / IP状态 .
双击TCP / IP协议名称检查TCP端口号 . 通常默认为1433 .
以下过程使用具有高级安全性的Windows防火墙Microsoft管理控制台(MMC)管理单元配置Windows防火墙 . 具有高级安全性的Windows防火墙仅配置当前配置文件 .
配置的另一件事 .
看看微软的doucmentation Configure a Windows Firewall for Database Engine Access
您可以检查MS SQL Server 2014的服务状态 . 在Windows 7中,您可以通过以下方式执行此操作:
转到搜索并键入“SQL Server 2014 Configuration Manager
然后单击左侧菜单上的"SQL Server Service"
如果SQL Server服务状态已停止或正在运行,请检查该实例
如果已停止,请将状态更改为正在运行并登录到SQL Server Management Studio 2014
如果你是在Visual Studio中进行调试时遇到此问题,请确保项目构建路径指向本地驱动器,或者按照these steps为网络文件夹授予权限 .
我发现以下技术很有用:
来自FIX : ERROR : Could not open a connection to SQL Server:
添加我的大量赞成comment作为截图的答案 .
我花了很多时间在这上面,最后对我有用的是:
1)打开 Sql Server Configuration Manager - > SQL Server Network configuration - > Protocols for <(INSTANCE)> - > TCP/IP (双击它) .
2)选择 - > IP Addresses(Tab) .
3)转到最后一个条目 IP All 并提及 TCP Port 1433 .
4)按Win R并输入 services.msc .
5)现在重启 SQL Server <(INSTANCE)> .
在此之后,问题得到了解决!
当我在Visual Studio中遇到此错误时,
...这是在执行以下C#代码期间,它试图获取我的SQL Server数据以在网格中显示它 . 中断发生在connect.Open()的行上:
这是莫名其妙的,因为SQL查询非常简单,我有正确的连接字符串,数据库服务器可用 . 我决定在SQL Management Studio中自己手动运行实际的SQL查询,它运行得很好并产生了几条记录 . 但有一点在查询结果中脱颖而出:在Friends表中的varchar(max)类型字段内部存在一些不正确编码的HTML文本(具体地说,"Narrative"列的数据中的某些编码注释符号
<!--
) . 可疑数据行如下所示:请注意编码的HTML符号“
<
", which stood for a " <" character. Somehow that made its way into the database and my C# code could not pick it up! It failed everytime right at the connect.Open() line! After I manually edited that one row of data in the database table Friends and put in the decoded " <”字符,一切正常!这是该行应该是什么样子:我使用下面这个简单的UPDATE语句编辑了我的一个坏行 . 但是如果你有几行有问题的编码HTML,你可能需要一个使用REPLACE函数的更精细的UPDATE语句:
因此,故事的寓意是(至少在我的情况下),在将HTML内容存储到数据库之前清理它,并且您不会首先得到这个神秘的SQL Server错误! (呃,如果你需要更多的信息,正确清理/解码你的HTML内容是另一个值得单独的StackOverflow搜索的讨论的主题!)
当我想在另一台PC上运行我的WinForms项目(包括使用SQL Server数据库并且在我的PC上运行完美)时,我遇到了同样的错误 . 问题在于我的电脑上的Windows防火墙 . 我通过添加两个规则解决了这个问题这是如何通过Windows防火墙允许SQL Server的整个过程:
打开"Run"并输入
services.msc
查找SQL Server(实例名称)和SQL Server Browser的服务 . 一次一个,右键单击,选择"Properties",将路径复制到exe文件
然后打开
firewall.cpl
,单击允许应用程序或添加规则,添加以前复制的路径(需要遵循的过程),选中域和专用,取消选中公共 .这是YouTube链接,您可以在其中看到此过程:Allow SQL Server through Windows Firewall
我通过设置使用Entity Framework作为启动项目的项目然后运行“update-database”命令来解决此问题 .