#c# #sql #sql-server
#c# #sql #sql-server
Вопрос:
У меня есть общий пользователь (имя пользователя: пользователь и пароль: пользователь), который имеет доступ к моей базе данных SQL. Итак, если я использую следующий код, я могу получить к нему доступ без проблем:
using System.Data.SqlClient;
namespace ConsoleApp1
{
Class Program
{
static void Main(string[] args)
{
string conString = "Data source=server; Initial catalog=db; Integrated security=true";
SqlConnection conn = new SqlConnection(conString);
using (conn)
{
conn.Open();
SqlCommand command = new SqlCommand("SELECT * FROM Table", conn);
SqlDataReader reader = command.ExecuteReader();
conn.Close();
}
}
}
}
Однако, если я изменю ограничение, заменив IntegratedSecurity=true
на User ID=user; Password=user
, тогда у меня будет исключение
System.Data.SqlClient.SqlException:'Login failed for user 'user'.'
Я хотел бы жестко запрограммировать эти учетные данные, чтобы каждый пользователь, не имеющий доступа к базе данных, мог использовать эти общие учетные данные, но я не могу решить это исключение.
Комментарии:
1. Если вы отключите интегрированную безопасность, она перестанет использовать учетные данные Windows, и вместо этого вам придется настроить конкретную учетную запись пользователя в самом SQL Server.
2. Ps. Чтобы было ясно, вы не можете использовать интегрированную защиту для входа в систему от имени другого пользователя Windows, отличного от того, под которым выполняется код (на всякий случай, на это вы надеетесь)
3. Некоторые визуальные подсказки здесь: guru99.com/sql-server-create-user.html
4. @PabloD., убедитесь, что сервер настроен на разрешение проверки подлинности SQL (по умолчанию используется только Windows). Проверьте журнал ошибок SQL Server, поскольку в нем будет больше подробностей о том, почему не удалось войти в систему.
5. Встроенная безопасность = true использует учетные данные Windows пользователя, который вошел в систему. Таким образом, вы никогда не используете как Integrate Security = true, так и имя пользователя / пароль.