2015-11-18 3 views
1

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-инструменты для чтения базы данных, даже не зная имя пользователя и пароль.

+0

Можете ли вы также показать, как вы пытаетесь подключиться к БД? Прямо сейчас у вашего вопроса нет кода на C#. – Eris

+0

Добавлена ​​строка подключения. На самом деле нет кода C# для показа. Это просто подключение ADO.NET к базе данных с помощью простого DataReader или даже ExecuteScalar. Они все бросают ту же ошибку. – goroth

+0

Если это ваша фактическая строка подключения. Оно сломано. Параны вокруг 'LocalDb' несовместимы. – Eris

ответ

0

Согласно MSDN Documentation:

Вы должны использовать интегрированную безопасность при использовании LocalDB или опцию AttachDBFileName.

+0

Как я и подозревал. Похоже, что LocalDB предназначен только для простых небезопасных приложений. На мой взгляд, SQLite была бы намного лучшей заменой для SQL Compact. По крайней мере, SQL Compact имел имя пользователя и пароль, которые вы могли бы добавить. – goroth

+0

Не совсем. LocalDB был разработан как экземпляр разработчика с минимальными издержками. Он никогда не предназначался для отправки внутри приложения и не заменял SQL CE. – Eris

+0

Итак, вы говорите, что Microsoft не «официально» заменяет устаревший SQL Compact? – goroth

Смежные вопросы