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

Connect to local SQL Server instance when running Service Fabric cluster in development environment

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

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

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

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

下方

对已接受答案的评论提到 运行 您作为不同用户帐户的服务。以下是如何做到这一点。在您的 ApplicationManifest.xml 文件中,插入:

<Principals>
  <Users>
    <User Name="AcctToUse" AccountType="DomainUser"
          AccountName="MyDomain\MyUsername" Password="MyPassword" />
  </Users>
</Principals>
<Policies>
  <DefaultRunAsPolicy UserRef="AcctToUse" />
</Policies>

编辑:我没说清楚,AcctToUse只是你编的一个字符串。它是指向 User 的键。另一方面,AccountName 字段是用户名。