使用sql身份验证的sql连接字符串

时间:2012-09-04 13:54:59

标签: c# sql-server sqlconnection

我正在使用这个sql连接字符串:

string connection = "data source=OSBORNECHARLES2;initial catalog=TWO;
integrated security=False;User ID=userid;Password=PWD";

我收到此错误:

  

已成功与服务器建立连接,但随后成功建立了连接   登录过程中发生错误。 (提供者:共享记忆   提供者,错误:0 - 管道的另一端没有进程。)

如果我设置integrated security=True;它正在工作。
如果我使用其他窗口用户登录,则会出现错误。

你能否告诉我为什么我会收到这个错误。

3 个答案:

答案 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配置管理器中完成。