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

azure-service-fabric

3799 просмотра

2 ответа

11441 Репутация автора

При открытии соединения 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, он говорит мне, что пользователь не может быть найден.

Автор: The Muffin Man Источник Размещён: 18.07.2016 05:48

Ответы (2)


16 плюса

11441 Репутация автора

Решение

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

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

В SSMS разверните узел Безопасность, Логины, щелкните правой кнопкой мыши NETWORK SERVICE и выберите свойства. Под User Mapping место флажок рядом с каждой базой данных , которые вы хотите , чтобы выставить доступ и вниз ниже public, db_datareader/writer.

введите описание изображения здесь

Автор: The Muffin Man Размещён: 19.07.2016 03:20

1 плюс

4354 Репутация автора

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

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

Редактировать: я не дал понять, AcctToUseэто просто строка, которую вы составляете. Это ключ, который указывает на User. AccountNameПоле с другой стороны , это имя пользователя.

Автор: user2023861 Размещён: 06.04.2018 05:43
Вопросы из категории :
32x32