Sql ユーザー インスタンスを使用するデスクトップ アプリケーションがあります。これは私の接続文字列です:
"Data Source=.\SqlExpress;
AttachDbFilename=C:\path\file.mdf;
Integrated Security=True;
User Instance=True;
Connect Timeout=100;"
私のアプリケーションはこの DB を作成し、Web サービスから大量のデータをダウンロードして、それを使用して多くのアクションを実行します。
問題は、接続を再度開こうとしたときに発生します。私は得るSqlException
:
「ユーザーのデフォルト データベースを開けません。
ログインに失敗しました。ユーザー 'myDomain\myusername' のログインに失敗しました。」
このエラーは、このコンテキストでは意味がありません。デフォルトのデータベースがありません。現在のアプリケーション専用に作成され、SqlExpress とは別に実行されているインスタンスにログインしています。
この DB に接続する他の方法はありません。SqlExpress サービスを開始してデフォルトのインスタンスに接続すると、それは表示されません。このアプリケーションのためだけに存在します。
ディスク上のファイルは、アプリケーションで実行されている SqlExpress インスタンス サービスによってロックされています。アプリを停止して再起動すると、最初は接続が機能しますが、再度開くと失敗します。アプリを停止するだけで、.mdf ファイルを削除して最初からやり直すことができますが、接続を再度開くとクラッシュします。
私のアプリが私として実行されているインスタンスを開始したため、現在のユーザーはインスタンス内のすべての DB にアクセスできる必要があります。
これは、同じコードの他のユーザーには発生しません。これは、SQL 構成の問題であることを示唆しています。
これの原因と回避方法を知っている人はいますか?