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