Подключение к локальному экземпляру SQL Server при запуске кластера Service Fabric в среде разработки

при открытии подключения sql к локальной базе данных в традиционном консольном приложении у меня нет проблем, однако, когда я пытаюсь сделать то же самое в службе без состояния, запущенной в Service Fabric, я получаю ошибку входа в систему.

ошибки я получаю это "Login failed for user 'WORKGROUPNICK$'."

и это код, который я использую для подключения

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

            }
}

когда я пытаюсь добавить этого пользователя в sql server, он говорит мне, что пользователь не может быть найден.

2 ответов


основываясь на комментариях выше, я узнал, что Service Fabric работает под учетной записью сетевой службы.

решение заключается в обновлении сопоставления пользователей и членства в ролях для баз данных, к которым требуется получить доступ в кластере SF.

в SSMS разверните Security, Logins, щелкните правой кнопкой мыши NETWORK SERVICE и выберите properties. В разделе сопоставление пользователей установите флажок рядом с каждой базой данных, к которой вы хотите предоставить доступ, и ниже public, db_datareader/writer.

enter image description here


в комментарии к принятому ответу упоминается запуск службы в качестве другой учетной записи пользователя. Вот как это сделать. В вашем приложении Manifest.xml-файл, вставьте это:

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

Edit: я не сделал это ясно,AcctToUse - это просто строка, которую вы составляете. Это ключ, который указывает на User. The