C# can';t使用帐户从WCF服务连接到SQL Server
我正在尝试从wcf服务连接到sql server。使用集成安全性,它可以正常工作,但当我使用帐户时,它失败了。我可以使用此帐户连接到sqL server management studio。我不确定我遗漏了什么,我是否需要另一个提供商来访问。感谢您的反馈C# can';t使用帐户从WCF服务连接到SQL Server,c#,sql,sql-server,wcf,C#,Sql,Sql Server,Wcf,我正在尝试从wcf服务连接到sql server。使用集成安全性,它可以正常工作,但当我使用帐户时,它失败了。我可以使用此帐户连接到sqL server management studio。我不确定我遗漏了什么,我是否需要另一个提供商来访问。感谢您的反馈 <add name="GISDBConnectionString" connectionString="Data Source=SVRName;Initial Catalog=db;User ID=GLOBAL\Test;Password
<add name="GISDBConnectionString" connectionString="Data Source=SVRName;Initial Catalog=db;User ID=GLOBAL\Test;Password=temp"
providerName="System.Data.SqlClient" />
尝试在连接字符串中添加integratedsecurity=false:
<add name="GISDBConnectionString" connectionString="Data Source=SVRName;Initial Catalog=db;Integrated Security=False;User ID=GLOBAL\Test;Password=temp"
providerName="System.Data.SqlClient" />
根据您帐户名中的反斜杠,我怀疑您试图在连接字符串中使用windows帐户。有两种登录可以连接到SQL Server:
- 在Active Directory中管理并有权访问SQL Server实例的Windows登录
- 在SQL Server management studio中管理和授权的SQL Server身份验证登录李>
integratedsecurity=SSPI
,也可以使用true
而不是SSPI
)。这意味着应用程序将使用运行进程的帐户连接到SQL Server。这种身份验证方法的最大优点是不必在连接字符串中存储凭据。另一方面,更改使用的帐户的唯一方法是让应用程序在另一个帐户下运行(或在每次连接到SQL Server时在应用程序中模拟)。因此,无法在连接字符串中设置另一个Windows帐户
如果要使用SQL Server身份验证帐户,必须在连接字符串中添加凭据(User Id=MyUserName;Password=MyPassword
)。您只能使用在上创建的帐户,并且该帐户已被授予访问您尝试连接到的SQL Server实例的权限。默认情况下,SQL Server实例配置为仅允许Windows身份验证,因此您可能需要首先启用SQL身份验证
请注意,SQL Server身份验证登录不能包含反斜杠-这就是我假设您希望在连接字符串中使用Windows帐户的凭据的原因,因为用户名包含反斜杠
那么,您如何解决这个问题:
- 如果要使用Windows帐户,请让应用程序在此帐户下运行。由于它是一个WCF应用程序,如果在IIS中托管,则必须更改应用程序池帐户。将连接字符串设置为:
Data Source=SVRName;初始目录=db;集成安全性=SSPI
- 如果不想更改应用程序运行时使用的帐户,请在SQL Server上创建一个经过SQL Server身份验证的登录名,并授予其对相关数据库的访问权限。在连接字符串中设置凭据:
Data Source=SVRName;初始目录=db;用户ID=SQLAuthLogin;密码=SQLAuthPwd
用户ID=GLOBAL\Test;Password=temp
SQL Server身份验证帐户?您得到的确切错误是什么?错误消息是什么?此用户是经过sql server身份验证的帐户。我收到错误消息:“用户'GLOBAL\\Test'登录失败”。stringJuat添加以下内容可以正常工作。用户名真的包含反斜杠吗?我无法使用反斜杠创建SQL Server身份验证帐户(另请参见参数login\u name)。但是,连接字符串中的用户Id
只接受SQL Server身份验证的帐户。错误指向凭据无效的方向。我添加了,但这没有任何区别。我也犯了同样的错误。感谢JayNote,如果您将登录/密码凭据添加到连接字符串中,还必须将integratedsecurity=false
(或者干脆将其从连接字符串中完全删除)。