Microsoft отказалась от SQL Compact, поэтому я хотел бы заменить это на SQL LocalDB на клиентских компьютерах.Заменить SQL Compact с SQL LocalDB на клиентских компьютерах с интегрированной безопасностью = False
При использовании "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, но я не являюсь получая хорошие ответы.
Кроме того, похоже, что есть аналогичные вопросы о stackoverflow, но нет хороших ответов.
LocalDB and Entity Framework 6 - Security
LocalDB connection with Integrated security=False
У меня есть ощущение, что я уже знаю ответ на этот LocalDB не может работать на других компьютерах со встроенной безопасности отключена, потому что в теории он использует локальный экземпляр сервера SQL, в котором логины хранятся в основной базе данных, а база данных клиентов-клиентов не соответствует логину внутри LocalDB.
На мой взгляд, это кажется смехотворным, что Microsoft откажется от проблем безопасности в LocalDB, оставив интегрированную защиту включенной.
Любой может найти базу данных, скопировать ее на свой компьютер, а затем использовать SQL-инструменты для чтения базы данных, даже не зная имя пользователя и пароль.
Можете ли вы также показать, как вы пытаетесь подключиться к БД? Прямо сейчас у вашего вопроса нет кода на C#. – Eris
Добавлена строка подключения. На самом деле нет кода C# для показа. Это просто подключение ADO.NET к базе данных с помощью простого DataReader или даже ExecuteScalar. Они все бросают ту же ошибку. – goroth
Если это ваша фактическая строка подключения. Оно сломано. Параны вокруг 'LocalDb' несовместимы. – Eris