Замените SQL Compact на SQL LocalDB на клиентских машинах с интегрированной безопасностью = False
Microsoft устарела SQL Compact, поэтому я хотел бы заменить его на SQL LocalDB на клиентских компьютерах.
При использовании "Integrated Security = True" замена отлично работает на клиентских компьютерах, но как только я установил "Integrated Security = False", я получаю
Ошибка входа пользователя 'TestUser'
Я не могу использовать интегрированную безопасность на клиентах.
Они не должны иметь доступ к базе данных, не зная имя пользователя / пароль, которые уже были зашифрованы в их machine.config.
Я создал логин в VS, как показано ниже:
CREATE LOGIN TestUser WITH PASSWORD = 'asdfsdfasdf';
GO
CREATE USER TestUser FOR LOGIN TestUser WITH DEFAULT_SCHEMA = [dbo];
GO
exec sp_addrolemember 'db_owner', 'TestUser'
GO
Строка подключения похожа на эту:
<add name=" ConnectionStringName"
connectionString="Data Source=(LocalDB)\v11.0;
AttachDbFilename=|DataDirectory|\TEST.mdf;
Integrated Security=False; User Id=TestUser;
Password=asdfsdfasdf"
providerName="System.Data.SqlClient" />
Я разместил аналогичный вопрос на форумах MSDN, но не получаю хороших ответов.
Кроме того, кажется, что есть похожие вопросы по stackru, но нет хороших ответов.
LocalDB и Entity Framework 6 - Безопасность
Подключение LocalDB с интегрированной безопасностью = False
У меня такое ощущение, что я уже знаю ответ в том, что LocalDB не может работать на других компьютерах с отключенной встроенной защитой, потому что теоретически он использует локальный экземпляр SQL-сервера, на котором имена входа хранятся в основной базе данных и клиентах Основная база данных не будет соответствовать имени входа в LocalDB.
На мой взгляд, кажется нелепым, что Microsoft отказалась от проблем безопасности в LocalDB, оставив встроенную защиту включенной.
Любой может найти базу данных, скопировать ее на свой компьютер, а затем использовать инструменты SQL для чтения базы данных, даже не зная имени пользователя и пароля.
1 ответ
Согласно документации MSDN:
Вы должны использовать встроенную защиту, когда используете LocalDB или параметр AttachDBFileName.