1

次の接続文字列があります。

<add name="xx" 
  connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=abc;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\abc.mdf" 
  providerName="System.Data.SqlClient" />

誰かが初期カタログの意味を説明できますか? 同じデータ ファイルを指しているが異なるカタログを指す 2 つの接続文字列を使用できますか?

4

2 に答える 2

4

LocalDb の通常の使用法は、AttachDBFilename を使用することです。プログラムは、通常は無視されるカタログ名のような GUID を作成します。SQL インスタンスが存在しない場合は、ファイルが最初にアクセスされたときに作成されます。インスタンスが存在しない可能性があり、使用の合間に任意に削除される可能性があります。すべては *.mdf ファイルを中心に展開します。これらのプログラムは、LocalDB をインストールする以外に SQL を使用することを期待されていないエンド ユーザーによってもインストールされます。

マスターで簡単に参照できるように、データベースに特定の名前を付けたい場合はどうすればよいでしょうか? 次に、初期カタログも使用する必要があります。特に、両方を使用しないと、名前がわからないため、マスターで sp_detach_db を使用してコードからデータベースをデタッチできないことがわかりました。

InitialCatalog と AttachDbFilename の両方を使用しても冗長ではありません。データベースがまだ存在せず、ファイルだけであるため、最初に AttachDBFilename が必要であり、マスターでデータベースとやり取りするには初期カタログが必要です。

私が本当に間違っている場合は、訂正してください。私はこのテクノロジを 1 年以上使用しており、すでに尋ねたが誰も答えていない自分自身の質問がたくさんあるためです。

于 2014-06-27T19:05:59.570 に答える
3

初期カタログは、接続文字列が対象とするサーバー上の DB です。

はい、異なる DB を指す複数の接続文字列を持つことができます。Data Source はサーバー名、Initial Catalog は DB 名です。

編集:( コメントでひどいように見えたので、ここでコメントに対処します)

データファイルの意味がわかりません。Geography と Reports という名前の 2 つの DB を含む SQL Server インスタンスがローカル マシンにセットアップされているとします。次のように、2 つの接続文字列を使用できます。

<add name="Geo" connectionString="Data Source=localhost;Initial Catalog=Geography;Trusted_Connection=True;persist security info=False;integrated security=SSPI;" providerName="System.Data.SqlClient"/>

<add name="Rep" connectionString="Data Source=localhost;Initial Catalog=Reports;Trusted_Connection=True;persist security info=False;integrated security=SSPI;" providerName="System.Data.SqlClient"/>
于 2013-03-06T15:13:01.683 に答える