#.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]