【问题标题】:No process is on the other end of the pipe (SQL Server 2012)管道的另一端没有进程(SQL Server 2012)
【发布时间】:2015-01-31 18:37:44
【问题描述】:

我遇到了这个错误:

A connection was successfully established with the server, but then an error occurred
during the login process. (provider: Shared Memory Provider, error: 0 - No process is
on the other end of the pipe.)

(Microsoft SQL Server, Error: 233)

我知道,这个站点上有类似的问题,答案是启用 TCP/IP 和管道。 但是我都启用了,还是不行:

我使用的是 Microsoft SQL Server 2012,并且用户拥有完全权限。

【问题讨论】:

  • 尝试 pinal dave 解决方案blog.sqlauthority.com/2009/05/21/…
  • 当我从服务器身份验证重新连接到 Windows 身份验证时,这对我有用。
  • 什么对我有用(sql express 2016)...删除混合身份验证只留下 Windows 身份验证,重新启动服务,将其切换回混合身份验证,重新启动服务。直到我这样做之前没有修复 No process 错误
  • 对于它的价值,请检查配置文件中的连接字符串。对我来说,有人修改了其中一个服务器名称并将其签入。我的代码试图访问我的服务器上不存在的数据库。
  • 对我也不起作用。

标签: sql-server sql-server-2012


【解决方案1】:

默认情况下,服务器仅设置为 Windows 身份验证。没有任何通知,错误的根源就是那个,所以很难弄清楚。 SQL Management Studio 不会警告您,即使您创建了仅使用 SQL 身份验证的用户。

所以答案是:从 Windows 切换到 SQL 身份验证

  1. 右击服务器名称,选择properties
  2. 选择security标签;
  3. 启用SQL Server and Windows Authentication mode;
  4. 重新启动 SQL Server 服务。

您现在可以使用您的登录名/密码进行连接。

以下是 Microsoft 的说明:https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/change-server-authentication-mode?view=sql-server-ver15

【讨论】:

  • 该选项已正确检查,因此我检查了“Windows 身份验证”,我重新启动服务,然后检查“Windows 身份验证 + SQL 身份验证”以解决该问题。好开心!
  • 澄清@Groco的评论:使用Windows Authentication登录>>右键单击您的服务器>>Properties>>Security(在Select a page下)>>在Server Authentication下选择SQL Server and Windows Authentication mode。关闭 SQL Server Management Studio,重新启动 SQL Server 服务,然后再次尝试登录。
  • 我遇到的问题是Server Authentication 被设置为Windows Authentication mode。不管密码输入是否正确,我总是收到A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) 的问候。在整个错误过程中,我能够使用Windows Authentication 登录
  • 非常感谢。重新启动 Sql 服务解决了我的问题。
  • 我尝试使用“sa”登录,得到了同样的错误。
【解决方案2】:

就我而言,通过 VPN 远程登录可以正常工作。但是从安装了sql server的服务器连接失败了。

事实证明,实例名称不是默认名称,例如。 SQLEXPRESS。因此,连接时需要明确指定。

服务器名称:. 例如。 ".\I01"

如果我是远程连接,我不必这样做,只需 ,

【讨论】:

    【解决方案3】:

    在我的例子中:为用户分配一个系统管理员角色。

    1. 以 Windows 身份验证用户身份登录
    2. 转到:安全->登录->右键用户->将服务器角色分配为系统管理员

    【讨论】:

    • 谈论“大锤方法”——这很危险,甚至不应该被视为解决方案。
    【解决方案4】:

    在我的情况下,数据库已恢复,并且已经有用户用于连接。我不得不将用户放入数据库并重新创建登录的用户映射。

    1. 删除用户

      DROP USER [MyUser]
      

    如果用户拥有任何架构,它可能会失败。这些必须在删除用户之前分配给 dbo。使用下面的第一个查询获取用户拥有的架构,然后使用第二个查询更改这些架构的所有者(HangFire 是从前一个查询获得的架构)。

    select * from information_schema.schemata where schema_owner = 'MyUser'
    ALTER AUTHORIZATION ON SCHEMA::[HangFire] TO [dbo]     
    
    1. 为用户更新用户映射。在管理工作室中转到安全-> 登录-> 打开用户-> 转到用户映射选项卡-> 启用数据库并授予适当的角色。

    【讨论】:

      【解决方案5】:

      始终尝试通过 SQL Management Studio 使用这些凭据登录。这可能会揭示一些您在代码运行时无法获得的更多细节。 我检查了 SQL + Windows 身份验证,重新启动了服务器,但仍然没有运气。 尝试使用 SQL 管理登录后,我得到这个提示:

      尽管登录是在几分钟前创建的,但不知何故密码已经过期。无论如何,新密码设置,连接字符串更新,一切都很好。

      【讨论】:

        【解决方案6】:

        此错误的另一个原因可能是数据库名称不正确或不存在。

        强制 TCP/IP 连接(通过提供 127.0.0.1 而不是 localhost.)可以揭示错误的真正原因。就我而言,连接字符串中指定的数据库名称不正确。

        所以,这里是清单:

        • 确保在配置管理器中启用了命名管道(不要忘记重新启动服务器)。
        • 确保您要连接的数据库存在。
        • 确保 SQL Server 身份验证(或混合模式)已启用。

        【讨论】:

        • 配置管理器在 express 2016 中发生了什么?我没看到它可用?哦,我现在必须运行 SQLServerManager13.msc
        • 当我更改为 127.0.0.1 时,我收到错误消息 Message=A network-related or instance-specific error 在建立与 SQL Server 的连接时发生。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)Source=Core .Net SqlClient 数据提供者
        • @kirsteng 检查您安装的 SQL Server 实例。您是否安装了默认实例 (MSSQLSERVER)?
        • 混合模式下的 SQL Server 身份验证为我做到了。伙计们,如果您全新安装 SQL Server Express,当您想为您的编程需求添加用户时,您需要将其更改为混合模式,否则只有 Windows 身份验证可用。
        • 这(有点)奏效了。一旦我将 localdb 废话更改为 127.0.0.1 它就通过了。
        【解决方案7】:

        是的,这个错误也可能是“失败了,祝你好运” - 在我的情况下,这是一个错误的用户名。 SQL Server 2019 RC1。

        【讨论】:

          【解决方案8】:

          也有这个错误,原因很简单,但并不明显:密码错误。不知道为什么我没有从新安装的 SQL 2016 服务器收到“登录失败”。

          【讨论】:

            【解决方案9】:

            要解决此问题,请使用 Windows 身份验证连接到 SQL Management Studio,然后右键单击服务器节点属性->安全并启用 SQL Server 和 Windows 身份验证模式。如果您使用“sa”,请确保该帐户已启用。为此,请在 Logins 下打开“sa”并查看 Status。

            如果这不起作用,您可能需要重新安装 SQL Server

            【讨论】:

            • 完成此操作后,重新启动 SQL Server。然后尝试登录。
            【解决方案10】:

            所以,我最近也遇到了这个问题,为了集成安全性,事实证明我的问题实际上很容易解决,但主要是因为我忘记在我的连接中添加 "Trusted_Connection=True"细绳。

            我知道这可能看起来很明显,但我花了大约 20 分钟,直到我意识到我已经从 connectionstrings.com 复制了我的连接字符串格式并且连接字符串的那部分丢失了。

            简单,我觉得有点愚蠢,但它是我的答案。

            【讨论】:

            • 我尝试了所有 cmets,但没有成功。您的解决方案非常适合我。非常感谢。
            • 这是我在启用了所有其他检查 tcp 的东西之后尝试的最后一件事,添加了混合模式身份验证并重新启动了 sql 浏览器服务并且它起作用了。谢谢
            【解决方案11】:

            按照另一个答案,如果仍然无法正常工作,请重新启动计算机以有效地重新启动 Windows 上的 SQL Server 服务。

            【讨论】:

            • 您通常也可以通过在 services.msc 中找到特定数据库来重新启动 SQL 服务
            【解决方案12】:

            确保您在 Security-> Logins 中指定了用户,如果没有 - 添加并重试。

            【讨论】:

              【解决方案13】:

              对我来说,我的登录用户的密码已过期,我也遇到了同样的异常。 然后我使用 Windows 身份验证模式登录并更改关联用户的密码,它解决了我的问题。

              【讨论】:

              • 你拯救了我的一天!
              【解决方案14】:

              如果您尝试使用 SQL 凭据登录,您还可以尝试在注册表中更改 SQL Server 的 LoginMode 以允许 SQL Server 和 Windows 身份验证。

              1. 打开注册表
              2. 转到 SQL 实例键(可能因您的实例名称而异): 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQLServer\
              3. 将 LoginMode 设置为 2

              1. 重新启动 SQL 服务和 SQL Server Management Studio,然后重试。

              【讨论】:

              • 这是最恰当的答案。
              【解决方案15】:

              我第二次遇到这个问题,之前所有的答案都失败了,幸运的是下面的请求可以完成这项工作:

              Alter login [user] with CHECK_POLICY = OFF
              go
              
              Alter login [user] with CHECK_POLICY = ON
              go
              

              【讨论】:

                【解决方案16】:

                我也有同样的问题 “与服务器成功建立连接,但随后发生错误 在登录过程中。 (提供者:共享内存提供者,错误:0 - 没有进程 在管道的另一端。)”

                我的连接是:

                服务器=POS06\SQLEXPRESS; AttachDbFilename=C:...\Datas.mdf;初始目录=数据;用户 ID = sa;密码=12345;连接超时=10;

                但我的 SQL 是 POS06\MSQL2014

                将连接字符串改为

                服务器=POS06\MSQL2014 ; AttachDbFilename=C:...\Datas.mdf;初始目录=数据;用户 ID = sa;密码=12345;连接超时=10;

                成功了。

                【讨论】:

                  【解决方案17】:

                  你也可以尝试去服务并重启你的Sql server instance

                  【讨论】:

                  • 在尝试了所有其他修复后,这解决了我的问题。
                  • 呃,这不应该带有一个很大的警告标签,仅仅因为无法连接而重新启动sql server服务会破坏其他已成功连接的东西吗?
                  • 这对我很有用。我可以看到人们很容易忽视考虑这个解决方案。
                  【解决方案18】:

                  请同时检查 还要检查配置 TCP/IP、名称管道和共享内存是否启用

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-09-01
                    • 2011-06-06
                    • 1970-01-01
                    • 2019-09-16
                    相关资源
                    最近更新 更多