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

Azure service fabric 在开发环境中运行Service Fabric群集时连接到本地SQL Server实例,azure-service-fabric,Azure Service Fabric,在传统控制台应用程序中打开到本地数据库的sql连接时,我没有问题,但是,当我尝试在service Fabric中运行的无状态服务中执行相同操作时,我会收到一个登录错误 我收到的错误是“用户'WORKGROUP\\NICK$'登录失败。” 这是我用来连接的代码 using (var con = new SqlConnection("Server=.;Trusted_Connection=True;Database=AddressBook")) { try

在传统控制台应用程序中打开到本地数据库的sql连接时,我没有问题,但是,当我尝试在service Fabric中运行的无状态服务中执行相同操作时,我会收到一个登录错误

我收到的错误是
“用户'WORKGROUP\\NICK$'登录失败。”

这是我用来连接的代码

using (var con = new SqlConnection("Server=.;Trusted_Connection=True;Database=AddressBook"))
{
            try
            {
                con.Open();
            }
            catch (Exception e)
            {

            }
}

当我尝试将该用户添加到sql server时,它告诉我找不到该用户。

根据上面的评论,我了解到Service Fabric正在网络服务帐户下运行

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

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


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

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


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

如何指定用户信用?您是否依赖于运行进程的用户?如果是这样的话,这将在一个与您一样运行的控制台应用程序中起作用,但在Service Fabric中,该进程默认在网络服务帐户下运行。@VaclavTurecek是的,我依赖于运行该进程的用户。我在sql server中设置了一个新用户,并为其指定了密码。我将连接字符串更改为以下内容,但运气不佳。服务器是否也需要更改<代码>服务器=。;用户Id=结构;密码=我的密码;Database=AddressBook
或者,您可以将服务配置为以具有数据库访问权限的其他用户帐户运行: