Как мне использовать мой логин, а не имя моего компьютера с аутентификацией Windows на SQL Server в веб-настройке? - PullRequest
1 голос
/ 06 октября 2009

У меня есть проект веб-установки, устанавливающий веб-приложение. В пользовательском действии я выполняю сценарий SQL для создания базы данных.

Простой, в основном пример кода MS. Работает нормально.

private void ExecuteSql(string serverName, string dbName, string Sql)
{
    System.Data.SqlClient.SqlConnection masterConnection = new System.Data.SqlClient.SqlConnection();
    masterConnection.ConnectionString = "Server=" + serverName + "; Database=" + dbName + ";Integrated Security=SSPI";

    System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql, masterConnection);
    Command.Connection.Open();
    Command.Connection.ChangeDatabase(dbName);
    try
    {
        Command.ExecuteNonQuery();
    }
    finally
    {
        Command.Connection.Close();
    }
}

Проблема в том, что пользователь, отправляемый на SQL Server, имеет имя «DOMAIN \ MACHINENAME $», например «AMBER \ CHAOS $», а не «AMBER \ corwin».

Если я добавлю «AMBER \ CHAOS $» в качестве имени входа на SQL Server и предоставлю пользователю достаточные права, все будет работать нормально. Это невозможно в конечном окружении.

Итак, что мне нужно сделать, чтобы мои веб-настройки подключались к серверу SQL как «AMBER \ corwin», а не «AMBER \ CHAOS $»?

Ответы [ 5 ]

0 голосов
/ 20 декабря 2009

Вероятно, это связано с тем, что пул приложений вашего веб-сайта работает как сетевой сервис, а не как пользователь Windows. Измените это значение на учетную запись, которую вы хотите подключить к базе данных (смотрите приложение, это может изменить ваше приложение в зависимости от архитектуры) и добавьте права в SQL.

0 голосов
/ 19 декабря 2009

Вы должны указать настраиваемое действие, чтобы выдать себя за пользователя. Как вы создаете MSI? В WiX вы добавили бы: Impersonate = "yes" к элементу.

0 голосов
/ 06 октября 2009

Вы можете попытаться возиться в файле * .config. Вы можете попробовать использовать эти элементы:

<system.web>   
  <authentication mode="Windows" />   
  <identity impersonate="true" /> 
</system.web>
0 голосов
/ 06 октября 2009

Возможно, это имя пользователя пула вашего веб-сайта; Попробуйте добавить в свой файл web.config, внутри /configuration/system.web:

<identity impersonate="true"/>

0 голосов
/ 06 октября 2009

Просто возьмите строку подключения и сделайте это:

masterConnection.ConnectionString = "Server =" + serverName + "; База данных =" + dbName + "; Встроенная защита = SSPI; UserId =" + userId + "; Пароль =" + пароль + ";";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...