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 フォーラムに同様の質問を投稿しましたが、適切な回答が得られません。
また、stackoverflow にも同様の質問があるようですが、良い回答はありません。
LocalDB および Entity Framework 6 -
Integrated security=False を使用したセキュリティ LocalDB 接続
理論的には、ログインがマスターデータベースとクライアントに保存されているSQLサーバーのローカルインスタンスを使用しているため、統合セキュリティがオフになっている他のコンピューターではLocalDBが機能しないという点で、私はすでに答えを知っていると感じています。 master データベースは、LocalDB 内のログインと一致しません。
私の考えでは、Microsoft が統合セキュリティをオンのままにすることで、LocalDB のセキュリティ問題を放棄するというのはばかげているように思えます。
誰でもデータベースを見つけて自分のコンピューターにコピーし、ユーザー名やパスワードを知らなくても SQL ツールを使用してデータベースを読み取ることができました。