我刚刚在家庭服务器上安装了SQL Server Express 2012。我正试图从我的桌面PC从Visual Studio 2012连接到它,并反复得到众所周知的错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
我尝试解决此问题:
如何让SQL Server 2012 Express允许远程连接?
答案 0 :(得分:723)
好吧,glad I asked。我终于发现的解决方案就在这里:
How do I configure SQL Server Express to allow remote tcp/ip connections on port 1433?
到目前为止,非常好,完全有预期。但那时:
(另外,如果您按照这些步骤操作,启用SQL Server Browser需要 ,并且您只需要允许端口1433,而不是1434.)
这些额外的五个步骤是我在以前版本的SQL Server,Express或其他版本中不记得曾经做过的事情。它们似乎是必要的,因为我在服务器上使用命名实例(myservername \ SQLEXPRESS)而不是默认实例。见这里:
Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)
答案 1 :(得分:103)
连接到远程SQL Server (无需打开UDP端口1434并启用SQL Server Browser)的正确方法是使用 ip和port 而不是命名实例强>
使用ip和port而不是命名实例也更安全,因为它减少了攻击面积。
也许2张照片说2000个字......
此方法使用指定的端口(这是大多数人想要的相信)..
此方法需要打开UDP端口1434并运行SQL Server Browser ..
答案 2 :(得分:31)
还有一件......
Kyralessa提供了很多信息,但我还有一件事要补充,即使在这篇文章之后我也被困住了。
在SQL Server网络配置下>服务器协议> TCP / IP已启用。右键单击TCP / IP并选择属性。在IP地址下,您需要为正在使用的每种连接类型将“已启用”设置为“是”。
答案 3 :(得分:17)
您可以使用它来解决此问题:
转到START>执行,然后运行 CLICONFG.EXE。
命名管道协议将首先出现在列表中。将其解除,并提升TCP / IP。
彻底测试应用程序。
我希望这有帮助。
答案 4 :(得分:14)
您也可以设置
全部听取否
在协议对话框中,然后在IP地址IP1(比如说)
将启用设置为是,
定义你的IP地址,
将TCP动态设置为空白和
TCP端口为1433(或其他)
答案 5 :(得分:10)
我最近遇到了这个问题。 2015年8月
通过打开 SQL Server配置管理器
解决可以使用 SQL Server Manager 连接到计算机: [hostaddress],1433
示例:
答案 6 :(得分:10)
这篇文章帮助了我......
How to enable remote connections in SQL Server
SQL Server中的所有内容都已配置,我的问题是防火墙阻塞了端口1433
答案 7 :(得分:6)
在安装了默认设置的SQL Server 2012 Developer Edition上,我只需要加载SQL Server配置管理器 - > SQL Server网络配置 - > MSSQLSERVER的协议,并将TCP / IP从禁用更改为启用。
答案 8 :(得分:5)
我必须添加防火墙入站端口规则才能打开UDP端口1434.这是一个Sql Server Browser监听的。
答案 9 :(得分:3)
我更喜欢“Rosdi Kasim”的方式,因为它不需要在IP上进行详细配置。
当我再次尝试启动另一台服务器时,我肯定会再次忘记它。
保持简单愚蠢(KISS)只需启用Sql Server Browser服务,然后在连接服务器时在IP后面添加\ SQLEXPRESS。
直接使用没有“\ SQLEXPRESS”的IP是我的失败点,因为它没有使用默认端口。
感谢。
答案 10 :(得分:3)
我在SQL Server 2014本地安装的命名实例时遇到了同样的问题。使用FQDN\InstanceName
进行连接会失败,而仅使用hostname\InstanceName
工作连接时会失败。例如:使用mycomputername\sql2014
进行连接有效,但使用mycomputername.mydomain.org\sql2014
却没有。 DNS正确解析,在SQL配置管理器中启用了TCP / IP,添加了Windows防火墙规则(然后关闭防火墙以进行测试以确保它不会阻止任何内容),但没有一个解决了问题。
最后,我必须启动" SQL Server浏览器" SQL Server上的服务并修复了连接问题。
我从未意识到SQL Server Browser服务实际上协助SQL Server建立连接;我的印象是,当你点击"浏览更多"时,它只是帮助填充下拉列表。如果端口#未明确分配(类似于网站绑定如何帮助缓解托管多个网站的IIS Web服务器上的相同问题),它实际上有助于将客户端请求与正确的端口#配合使用。
此连接项为我提供了有关SQL Server Browser服务的线索:https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-name
- 当您使用wstst05 \ sqlexpress作为服务器名称时,客户端代码将机器名称与实例名称分开,而wstst05是 与netbios名称进行比较。我认为他们没有问题可以匹配 并且连接被认为是本地的。从那里,我们检索 需要的信息没有联系SQL浏览器并连接到 通过共享内存的SQL实例没有任何问题。
- 当您使用wstst05.capatest.local \ sqlexpress时,客户端代码无法将名称(wstst05.capatest.local)与 netbios名称(wstst05)并考虑连接" remote"。这是 通过设计,我们一定会考虑改进这一点 未来。无论如何,由于考虑到连接远程和事实 它是一个命名实例,客户端决定它需要使用 SQLBrowser用于名称解析。它试图联系SQL浏览器 wstst05.capatest.local(UDP端口1434),显然该部分失败了。 因此你得到的错误。
" SQL Server Browser"来自TechNet的服务(我强调):https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx
来自"使用SQL Server浏览器"部分:
如果SQL Server Browser服务未运行,您仍然可以 如果您提供正确的端口号或连接到SQL Server 命名管道。例如,您可以连接到默认实例 如果SQL Server使用TCP / IP,则它在端口1433上运行。但是, if SQL Server Browser服务未运行,如下所示 连接不起作用:
- 尝试连接到命名实例但未完全指定所有参数(例如TCP / IP端口或命名)的任何组件 管)即可。
- 生成或传递服务器\实例信息的任何组件,以后可供其他组件重新连接。
- 在不提供端口号或管道的情况下连接到命名实例。
- 如果不使用TCP / IP端口1433,则DAC到命名实例或默认实例。
- OLAP重定向程序服务。
- 枚举SQL Server Management Studio,企业管理器或查询分析器中的服务器。
如果您在客户端 - 服务器方案中使用SQL Server(例如, 当您的应用程序通过网络访问SQL Server时, if 您停止或禁用SQL Server Browser服务,您必须分配一个 每个实例的特定端口号并写入您的客户端 应用程序代码始终使用该端口号。这种方法有 以下问题:
- 您必须更新和维护客户端应用程序代码,以确保它连接到正确的端口。
- 您为每个实例选择的端口可能被服务器上的其他服务或应用程序使用,从而导致SQL实例 服务器不可用。
来自" SQL Server浏览器如何工作的同一篇文章的更多信息"部分:
因为只有一个SQL Server实例可以使用端口或管道, 为命名分配了不同的端口号和管道名称 实例,包括SQL Server Express。默认情况下,何时 启用后,命名实例和SQL Server Express都配置为 使用动态端口,即在SQL时分配可用端口 服务器启动。如果需要,可以将特定端口分配给 SQL Server的实例。连接时,客户端可以指定 特定港口;但如果端口是动态分配的,则为端口 数字可以随时重新启动SQL Server,因此端口正确 号码是客户所不知道的。 ...当SQL Server客户端请求时 SQL Server资源,客户端网络库发送UDP消息 使用端口1434到服务器.SQL Server Browser响应 所请求实例的TCP / IP端口或命名管道。网络 然后,客户端应用程序上的库完成连接 使用端口或命名管道向服务器发送请求 期望的实例
答案 11 :(得分:2)
我必须通过Configuration Manager添加端口并在我的sql连接中添加端口号 [host] \ [db instance name],1433
请注意,instancename和port之间的(逗号)
答案 12 :(得分:1)
要检查的另一件事是你正确拼写了命名实例!
本文非常有助于解决连接问题:How to Troubleshoot Connecting to the SQL Server Database Engine
答案 13 :(得分:1)
到目前为止我提到的所有答案都有不同的问题!
我应该首先说我在Visual Studio中使用它,而不是SQL Server Express,但解决方案应该完全相同。
嗯,上帝,它实际上非常简单,也许有点愚蠢。 当我尝试创建一个数据库并且Visual Studio建议了SQL Server的名称时,它给了我我的Windows用户名,因为它实际上是我去的服务器的名称。
实际上它实际上是我的Windows用户名+ \SQLEXPRESS
。如果你没有改变任何设置,这可能也是你的。如果有效,请停止阅读;这是我的答案。如果它不起作用,名称可能不同。
如果像我一样,您只在Visual Studio中遇到此问题以检查您的内容,请按照以下步骤操作:
这是服务器的名称,这是您应该尝试连接的名称!而不是Visual Studio建议的内容!
答案 14 :(得分:1)
在我的情况下,数据库在非标准端口上运行。检查您连接的端口是否与运行数据库的端口相同。如果有更多SQL Server实例,请检查正确的实例。
答案 15 :(得分:0)
您需要做的就是打开服务器防火墙上的相关端口。
答案 16 :(得分:0)
连接到SQL Server时遇到问题?
尝试断开防火墙的连接。
如果您可以在断开防火墙连接的情况下进行连接,则可能是您错过了一些输入规则,例如“ sql service broker”,请将此输入规则添加到防火墙中:
“ SQL ADMIN连接” TCP端口1434
“ SQL ADMIN连接” UDP端口1434
“ SQL分析服务” TCP端口2383
“ SQL浏览分析服务” TCP端口2382
“ SQL DEBUGGER / RPC” TCP端口135
“ SQL SERVER” TCP PORT 1433和其他(如果您有动态端口)
“ SQL服务代理” TCP PORT 4022