ошибка входа для проверки подлинности Windows на новом сервере

#.net #sql-server #ado.net #windows-authentication

#.net #sql-сервер #ado.net #windows-проверка подлинности

Вопрос:

У меня есть резервная копия моей базы данных SQL, восстановленная на другом компьютере. Теперь, когда я пытаюсь войти в него программно с помощью C #, я получаю ошибку:

Не удалось войти в систему для пользователя «новое имя компьютера»».

Я использую проверку подлинности Windows, и моя строка подключения выглядит следующим образом:

 Data Source=.\sqlexpress;Initial Catalog="office_ session";Integrated Security=True
  

когда я пытаюсь Visual studio -> server explorer -> мастер подключения к базе данных
все работает нормально.

Спасибо, что уделили мне время.

Комментарии:

1. Вы запускаете свое приложение как службу?

Ответ №1:

Если это веб-сайт, запущен ли он в Visual Studio? Если да, то выполняется ли он под веб-сервером Cassini или IIS Express? Если это так, проверьте, включена ли проверка подлинности Windows (нажмите F4, когда выбран проект webapplication).

Комментарии:

1. Нет, просто приложение Windows.

Ответ №2:

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

Попробуйте предоставить доступ к базе данных вашему пользователю в SQL Server Management Studio. Если вы не можете этого сделать, измените строку подключения, чтобы использовать другой логин.

Комментарии:

1. На самом деле на новом компьютере нет management studio. Но, как я упоминал, мастер подключения Visual Studio выдает ту же строку и подключается идеально.

2. Возможно, вам удастся подключиться к базе данных с помощью мастера подключения Visual Studio, однако у вашего пользователя может не быть прав на выполнение операций с базой данных, таких как ВЫБОР в таблице, запуск хранимой процедуры и т.д. Я подозреваю, что это имеет место здесь.

3. Правильно. При методе заполнения возникает ошибка

4. Какую инструкцию SQL вызывает метод Fill? Если это SP, вам нужно предоставить доступ на выполнение к этому SP для вашего пользователя. Если это ВСТАВКА или ОБНОВЛЕНИЕ, вам необходимо предоставить разрешения на уровне таблицы.

5. вы имеете в виду, что я делаю это: ВЫБЕРИТЕ SUSER_ID(‘new_user’) — ( не SUSER_SID) Если @@ROWCOUNT = 0 СОЗДАЙТЕ ЛОГИН [new_user] Из WINDOWS, Если нет @@ROWCOUNT = 0 ИСПОЛЬЗУЙТЕ [My_DB], ВЫБЕРИТЕ USER_ID (‘new_user’) Если @@ROWCOUNT = 0, ИСПОЛЬЗУЙТЕ [My_DB], СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЯ [new_user] ИЗ LOGIN [new_user]