Dam*_*ien 139 sql-server sql-server-2005 database-connectivity
我似乎无法从站点连接到我的数据库.我收到此错误:
命名管道提供程序,错误:40 - 无法打开与SQL Server的连接
我尝试使用本地IP地址连接以及公共IP地址.我试过了:
我还能在这做什么?
Kaz*_*zem 108
解决这个问题非常简单:
步骤截图:

miz*_*shu 80
最简单的解决方案 - 检查你的斜线是否回来了......
我花了大约一个小时试图弄清楚什么是SERVER/INSTANCENAME什么是错误的,当一切配置正确,命名管道,用户访问权限......然后它突然袭击我,它不是斜线,它是一个反斜杠(\).
恐怖,耻辱......
Pom*_*air 42
安装SQL Server后,这是一个三步过程:
重新启动服务器SQL Config Manager - > SQL Server服务 - > SQL Server(SQLEXPRESS) - >右键单击 - >重新启动
使用正确的服务器和实例名称(两者都需要!)通常这将是.\ SQLEXPRESS,例如,请参阅QueryExpress连接对话框中的屏幕截图.
你有它.
小智 18
我刚刚安装了SQL SERVER 2012开发人员.当我创建我的第一个SSIS包时,当我尝试在"连接管理器"框中的SQL Server 2012数据工具中创建数据连接任务时,我收到此管道错误.我在上面的帖子的帮助下解决了.
如果选择一个命名实例,并调用命名实例SSQDatabase1,则您的pc名称为PCX1.您必须输入PCX1\SSQDatabase1而不仅仅是SSQDatabase1,否则您将收到命名管道错误.
Kha*_*han 15
MSDN Social上的一个帖子,Re:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接,有一个相当不错的列表,列出了与您的错误相关的可能问题.您可能想看看它们中的任何一个是否正如您所遇到的那样.
小智 6
感谢Damian ......
TCP/IP命名管道......均已启用
Web Config ....(对于localhost)
<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
TL;DR:您的 SQL Server 实例正在使用动态端口,因此它无法工作。强制 SQL Server 服务使用静态端口#1433 使其正常工作。
\n详细说明:在开始详细说明之前,让我们首先了解可能发生此问题的场景。
\n每当我们在计算机上运行 SQL Server 安装程序时,它都会要求我们输入服务实例的名称。为什么它要求它?原因是 SQL Server 安装程序提供了一种工具,您可以通过该工具在同一台计算机上安装和运行 SQL Server 服务的多个实例。由于多种原因,您可能希望在同一个机器上运行多个 SQL Server 服务实例,例如,您的资产中没有更多物理服务器、隔离 SQL Server 实例故障、负载平衡等。在同一台机器上,您必须为每个服务实例指定唯一的名称。看看我的机器(参见屏幕截图)。我只有一个服务实例,它是 SQL Server 的默认服务实例:
\n\n对于通过 SQL Server 安装程序设置的每个新实例,此服务控制台窗口中将出现一个新行,其“名称”列中具有相同的SQL Server前缀。括号中的文本(MSSQLSERVER)是服务实例的名称。要了解 SQL Server 服务实例的命名约定,请参阅答案末尾的推论部分。
\n因此,如果在给定计算机上运行多个 SQL Server 服务实例,则可能会出现此问题。当您有两个或两个以上的 SQL Server 实例在同一个机器上运行时,有两种可能的配置:
\n关键概念:计算机上安装的每个 Microsoft SQL Server 服务实例都使用不同的端口来侦听传入的 SQL 连接请求。换句话说,每个 SQL Server 服务都是一个附加到唯一端口号的不同进程。SQL Server 的默认实例使用端口# 1433。当您安装命名实例时,它们将开始使用动态端口,该端口是在启动与命名 SQL Server 实例相对应的 Windows 服务时决定的。
\n我的代码无法连接到我的 VM 上唯一指定的 SQL Server 实例(错误代码为 40)。您可以尝试以下可能的解决方案:
\n解决方案#1:尝试连接到 SQL Server 实例的客户端代码在 SQL Server 浏览器服务的帮助下找出您的命名实例正在侦听传入连接的端口号。确保您的计算机上正在运行 SQL 浏览器服务。
\n解决方案#2:从 SQL Server 配置管理器检查您指定的 SQL Server 实例正在使用的端口号(黄色),如下面的快照所示:
\n\n在连接字符串中明确使用该端口号或sqlcmd如下所示:
sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt\nRun Code Online (Sandbox Code Playgroud)\n解决方案#3:强制您的命名实例使用端口#1433,否则默认实例将使用该端口。请记住,仅当您没有在计算机上运行任何默认 SQL Server 实例时,此解决方案才有效,因为端口 # 1433 已被使用。在任何操作系统中,给定的端口号永远不能同时被两个进程使用。归根结底,我们的 SQL Server 服务实例也是一个进程。
\n将TCP 动态端口字段设置为空白,并将TCP 端口字段设置为 1433。
\n\n更改连接字符串中的端口号,如下所示:
\nsqlcmd -s mymachinename\\instanceName -i deleteDB.sql -o SQLDelete.txt\nRun Code Online (Sandbox Code Playgroud)\n或者
\nsqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt\nRun Code Online (Sandbox Code Playgroud)\n注意:保存 TCP/IP 设置后,请重新启动 SQL Server 服务实例。
\n有趣的是,在解决错误后,当我返回动态端口设置以重现相同的错误时,它并没有发生。不知道为什么。
\n请阅读以下有趣的主题,了解有关 SQL Server 动态端口的更多信息:
\n\n什么时候是动态端口 \xe2\x80\x9cdynamic\xe2\x80\x9d?
\n\n我从这个博客中找到了解决问题的线索。
\n推论:SQL Server 实例的名称遵循下面提到的逻辑
\n对于默认实例,它与托管 SQL Server 服务的计算机的名称相同。它是预定义的。用户在安装过程中无法更改它。不要对服务名称中的后缀(MSSQLSERVER)感到困惑。它是一个仅与服务器端相关的内部管理名称。客户端应用程序永远不会知道这一点。
\n对于命名实例,它是特定格式的串联字符串,如下所示 - <托管 SQL Server 服务的计算机的名称> \\ <用户定义的实例名称>
\n\n专业提示:默认 SQL Server 实例也可以通过几个别名进行连接,这些别名易于键入且直观易记。但只有当您尝试从服务主机本身连接到服务实例时才能使用别名。在这种情况下,您还可以使用下面提到的别名来代替主机名:
\n从远程计算机连接到 SQL Server 服务实例时,只有标准名称才有效。
\n| 归档时间: |
|
| 查看次数: |
568599 次 |
| 最近记录: |