我正在使用这个sql连接字符串:
string connection = "data source=OSBORNECHARLES2;initial catalog=TWO;
integrated security=False;User ID=userid;Password=PWD";
我收到此错误:
已成功与服务器建立连接,但随后成功建立了连接 登录过程中发生错误。 (提供者:共享记忆 提供者,错误:0 - 管道的另一端没有进程。)
如果我设置integrated security=True;
它正在工作。
如果我使用其他窗口用户登录,则会出现错误。
你能否告诉我为什么我会收到这个错误。
答案 0 :(得分:4)
我想你可以使用这个
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;
答案 1 :(得分:3)
我打算猜测一下。我假设您的SQL实例设置为仅允许Windows \集成登录。您在连接字符串中设置的用户标识\密码仅用于SQL登录,您不能以这种方式传递另一个Windows用户。您似乎正在尝试使用连接字符串进行模拟。我希望就这么简单。
因此,您可能需要在sql实例上启用混合模式安全性并为此用户创建sql登录,或者您需要在应用程序中模拟该Windows用户,然后使用集成安全性。
答案 2 :(得分:3)
我知道这是一个老问题,但你使用的提供商是什么。根据{{3}}帖子,' SSPI'适用于SQLClient和Oledb,而“' true' false'仅适用于SQLClient。
this关于此主题的另一篇有用的帖子,解释了使用' SSPI'或者' true'将导致它尝试使用当前用户的Windows凭据。
我同意其他一些评论。可能的原因是: 1)服务器上未启用SQL身份验证。可以执行以下操作进行故障排除: 一个。尝试使用通过SSMS连接的SQL身份验证进行访问。如果成功,则表示启用了SQL身份验证。 2)您尝试登录失败的用户没有获得许可。 一个。确保用户具有服务器主体。作为一项额外措施(尽管我认为不重要)确保服务器主体与其默认数据库上的数据库主体绑定。
如果它是远程服务器,则需要启用所有必需的服务,这可以在SQL Server配置管理器中完成。