Edited at

Azure ServiceFabric - エミュレーターからLocalDBへの接続

More than 1 year has passed since last update.

LocalDBは外部からの接続に制限がある。

Azure Service FabricのエミュレーターからLocalDBへ接続する場合、外部接続

扱いとなってしまう。

LocalDBに共有名を設定し、"NETWORK SERVICE"アカウントを追加し、db_ownerのロールにマッピングすると、Service Fabricのエミュレーターから共有名でのアクセスができるようになる。

コマンドプロンプトから下記のコマンドを実行。

[[databasename]]のところは環境に合わせて変更(3か所)

sqllocaldb create MSSQLLocalDB

sqllocaldb start MSSQLLocalDB
sqllocaldb share mssqllocaldb sharedlocal
sqllocaldb stop MSSQLLocalDB
sqllocaldb start MSSQLLocalDB

"c:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.EXE" -S "(localdb)\.\sharedlocal" -d "[[databasename]]" -Q"create login [nt authority\network service] FROM windows with DEFAULT_DATABASE=[[databasename]];use [[databasename]];exec sp_addrolemember 'db_owner', 'nt authority\network service';"

App.configの接続文字列を下記のように設定

[[DbContextName]]、[[databasename]]は環境に合わせて変更

<add name="[[DbContextName]]" connectionString="data source=(localdb)\.\sharedlocal;initial catalog=[[databasename]];integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

参考

stackoverflow - Using LocalDB with Service Fabric