在传统控制台应用程序中打开与本地数据库的SQL连接时,我没有任何问题,但是当我尝试在Service Fabric中运行的无状态服务中执行相同操作时,我收到登录错误。
我收到的错误是"Login failed for user 'WORKGROUP\\NICK$'."
这是我用来连接
的代码using (var con = new SqlConnection("Server=.;Trusted_Connection=True;Database=AddressBook"))
{
try
{
con.Open();
}
catch (Exception e)
{
}
}
当我尝试将该用户添加到sql server时,它告诉我无法找到该用户。
答案 0 :(得分:15)
根据上述评论,我了解到Service Fabric正在NETWORK SERVICE帐户下运行。
解决方案是更新要在SF群集中访问的数据库的用户映射和角色成员身份。
在SSMS中展开“安全”,“登录”,右键单击“网络服务”,然后选择“属性”。在“用户映射”下,在public
db_datareader/writer
下面的每个数据库旁边放置一个要显示访问权限的复选框。
答案 1 :(得分:1)
对已接受的答案的评论提到将您的服务作为其他用户帐户运行。这是如何做到的。在ApplicationManifest.xml文件中,插入:
<Principals>
<Users>
<User Name="AcctToUse" AccountType="DomainUser"
AccountName="MyDomain\MyUsername" Password="MyPassword" />
</Users>
</Principals>
<Policies>
<DefaultRunAsPolicy UserRef="AcctToUse" />
</Policies>
编辑:我没有说清楚,AcctToUse
只是一个你组成的字符串。它是指向User
的关键字。另一方面,AccountName
字段是用户名。