Замените 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.

Другие вопросы по тегам