by WebSurfer
15. September 2010 22:13
ASP.NET ベースの Web アプリケーションの開発時に Visual Studio を SQL Server に接続する話です。
(2014/6/11 追記:以下は Visual Studio 2010 までの話です。ユーザーインスタンスが非推奨になり、開発用には、ユーザーインスタンスに代えて、SQL Server 2012/2014 Express LocalDB の使用が推奨されています。Visual Studio 2012 以降ではユーザーインスタンスではなく LocalDB に接続することになりますので注意してください)
Visual Studio のサーバーエクスプローラ(VWD Express 版はデータベースエクスプローラ)を開いてデータ接続のノードを右クリックし、「接続の追加」メニューを表示します。その中の「データソース(S):」の「変更」ボタンをクリックすると、下のような選択画面が表示されます。
SQL Server を DB に利用する場合、選択は以下のとおりとなります。なお、VWD Express, VC# Express, VB Express では既定のインスタンスへの接続ができない(上の画像で「Microsoft SQL Server」のメニューがない)こと、SQL Server Express Edition 以外にはユーザーインスタンスの機能がないことに注意してください。
-
App_Data フォルダに置いた DB のユーザーインスタンスに接続 ==> 「Microsoft SQL Server データベースファイル」を選択。
-
ローカルまたはリモート SQL Server DB の既定のインスタンス(または名前つきインスタンス)に接続 ==> 「Microsoft SQL Server」を選択。
自分の場合、開発環境ではほぼ 100% 前者を利用しています。アタッチとかログインなどの設定をしなくても、Access と同様に簡単に SQL Server に接続して DB を扱えるようになりますので。
後者は、SQL Server の知識をある程度得てから、必要があれば利用する程度にした方がよさそうです。Visual Studio のウィザードを使うと、DB の作成からアクセスの設定まで簡単にできてしまいますが、中で何が起こっているか理解していないままやると、後で収拾がつかなくなる恐れがありますので。← 経験談(笑)
SQL Server Express Edition の場合、自動生成される接続文字列は以下のようになります。ご覧のとおり、前者はユーザーインスタンスが有効になっています。(注:SQL Server の Express 版をデフォルト設定でインストールすると「名前つきインスタンス」になります。以下の接続文字列で SQLEXPRESS は名前つきインスタンスの名前です)
Microsoft SQL Server データベース ファイル
---------------------------------------
Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\<mdf ファイル名>;
Integrated Security=True;
Connect Timeout=30;
User Instance=True
Microsoft SQL Server
--------------------
Data Source=.\SQLEXPRESS;
Initial Catalog=<データベース名>;
Integrated Security=True
なお、ここに書いたことは、Visual Studio から DB への接続の話であり、アプリケーションから DB への接続とは違うことに注意してください。
アプリケーションから SQL Server の既定のインスタンスへの接続は、接続文字列の変更と SQL Server 側の設定でどのようにでもできます。