在开发环境中运行Service Fabric群集时连接到本地SQL Server实例

时间:2016-07-18 17:48:55

标签: azure-service-fabric

在传统控制台应用程序中打开与本地数据库的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时,它告诉我无法找到该用户。

2 个答案:

答案 0 :(得分:15)

根据上述评论,我了解到Service Fabric正在NETWORK SERVICE帐户下运行。

解决方案是更新要在SF群集中访问的数据库的用户映射和角色成员身份。

在SSMS中展开“安全”,“登录”,右键单击“网络服务”,然后选择“属性”。在“用户映射”下,在public db_datareader/writer下面的每个数据库旁边放置一个要显示访问权限的复选框。

enter image description here

答案 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字段是用户名。