我正在尝试从wcf服务连接到sql server。使用集成安全性,它工作正常但是当我使用帐户时,它失败了。我可以使用此帐户连接到sqL服务器管理工作室。我不确定我缺少什么,是否需要其他提供商来进行访问。感谢任何反馈。
<add name="GISDBConnectionString" connectionString="Data Source=SVRName;Initial Catalog=db;User ID=GLOBAL\Test;Password=temp"
providerName="System.Data.SqlClient" />
答案 0 :(得分:1)
根据您帐户名称中的反斜杠,我怀疑您正在尝试在连接字符串中使用Windows帐户。有两种可以连接到SQL Server的登录:
在连接字符串中,您可以选择使用Windows身份验证(Integrated Security=SSPI
,也可以使用true
代替SSPI
)。这意味着应用程序将使用运行该进程的帐户连接到SQL Server。此身份验证方法的最大优点是您不必在连接字符串中存储凭据。另一方面,更改所用帐户的唯一方法是让应用程序在另一个帐户下运行(或在每次连接到SQL Server时模拟应用程序)。因此无法在连接字符串中设置另一个Windows帐户。
如果要使用经过SQL Server身份验证的帐户,则必须在连接字符串(User Id=MyUserName;Password=MyPassword
)中添加凭据。您只能使用在您尝试连接的SQL Server实例上创建并授予其权限的帐户。默认情况下,SQL Server实例配置为仅允许Windows身份验证,因此您可能需要首先启用SQL身份验证。
请注意,SQL Server身份验证登录不能包含反斜杠 - 这就是我假设您要在连接字符串中使用Windows帐户凭据的原因,因为用户名包含反斜杠。
那你怎么解决这个问题:
Data Source=SVRName;Initial Catalog=db;Integrated Security=SSPI
。Data Source=SVRName;Initial Catalog=db;User ID=SQLAuthLogin;Password=SQLAuthPwd
。答案 1 :(得分:0)
尝试将Integrated Security = false添加到连接字符串中:
<add name="GISDBConnectionString" connectionString="Data Source=SVRName;Initial Catalog=db;Integrated Security=False;User ID=GLOBAL\Test;Password=temp"
providerName="System.Data.SqlClient" />