- PR -

SqlConnection.ConnectionStringプロパティでのDataSource指定

1
投稿者投稿内容
yem
常連さん
会議室デビュー日: 2008/01/05
投稿数: 37
投稿日時: 2008-01-05 01:38
お世話になります。

SQL Server2005 Expressを使用しています。
今まで、ConnectionStringの接続文字列をInitial Catalogで接続していましたが、これが何故か接続できなくなって、しまいました。
そこで、試しにAttachDbFilenameで接続してみたところ、問題なく接続できました。

Initial Catalogでの接続とAttachDbFilenameでの接続との意味を理解していないため、なぜこんなことになったのか不思議なのですが、この辺りについてご教授いただけないでしょうか?

(DataBaseフォルダのTestデータベースに接続して失敗)
SqlConnection cn = new SqlConnection();
cn.ConnectionString
= "Data Source=.\\\\SQLEXPRESS;Initial Catalog=D:\\\\DataBase"+
"\\\\Test.mdf;Integrated Security=True";
今は理由が分からないので、仕方なくInitial CatalogとAttachDbFilenameとを試させてデータベースに接続させています。

ちなみに、どこかのサイトで、Initial Catalogを使うのが一般的とのコメントを見たことがありますが、その意味もわからぬままでいます。

よろしくお願いいたします。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-01-05 08:43
引用:

今まで、ConnectionStringの接続文字列をInitial Catalogで接続していましたが、これが何故か接続できなくなって、しまいました。


データベースがデタッチされているからでしょう。
Test.mdfをアタッチすると接続できるのでは。

引用:

Initial Catalogでの接続とAttachDbFilenameでの接続との意味を理解していないため、なぜこんなことになったのか不思議なのですが、この辺りについてご教授いただけないでしょうか?


Initial Catalogは、SQL Server/SQL Server Expressにデータベースがアタッチされているときに使用します。

AttachDbFilenameはランタイム時にデータベースをアタッチします。
したがって、AccessのMDBのようにデータベースを任意のフォルダ(App_Data)に格納
しておくことができます。

さらに、「|DataDirectory|」を使用すると自動的に「App_Data」の物理パスを
生成してくれますので

AttachDbFilename=|DataDirectory|Test.mdf;....

にように宣言できます。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-01-05 08:59
さかもとと申します。

>>Initial Catalogを使うのが一般的とのコメントを
おそらくこれは以下のURLのようなことが理由だと思われます。
http://www.hollytown.net/top/forums/50/ShowPost.aspx

開発時のみExpressで本番ではそれより上のエディションを利用するということであれば、AttachDbFilenameは利用しない方が無難かもしれません。

なぜ急に接続できなくなったかはわかりませんが、initial catalogキーワードを使うということはSQLServerのあるインスタンス内の1つのDBに接続することになるかと思います。

あるインスタンスにたとえばDBが2つあったらどちらが既定の接続先か?を指定するキーワードです。
インスタンス名が「sakamoto」の場合で、「gahaku」というDBに接続する場合
Data Source=.\sakamoto;Initial Catalog=gahaku;
となります。

つまり論理データベース名を「明確に指定する」キーワードです。


>>cn.ConnectionString
>>= "Data Source=.\\\\SQLEXPRESS;Initial Catalog=D:\\\\DataBase"+
>>"\\\\Test.mdf;Integrated Security=True";

とInitial Catalogキーワードにディレクトリ指定をしてますが、これをやったことないのですが、普通はディレクトリ指定はAttachDbFilenameキーワードで利用しますよね?(できるんでしょうか?)



_________________
------------------------------------------
拝啓、さかもとと申します。

拝啓、さかもとと申します♪

[ メッセージ編集済み 編集者: さかもと 編集日時 2008-01-05 09:00 ]
yem
常連さん
会議室デビュー日: 2008/01/05
投稿数: 37
投稿日時: 2008-01-05 19:12
ありがとうございます。

おかげさまで、Initial Catalogでの接続もできましたし、
AttachDBFileNameの使用制限も理解できました。

関連事項もご教授いただいたおかげで、安心して操作できるようになりました。
1

スキルアップ/キャリアアップ(JOB@IT)