WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

ユーザーインスタンス

by WebSurfer 2010年9月14日 21:54

Visual Studio での SQL Server 接続の設定

将来的には無くなる機能だそうですが、SQL Server 2005/2008 Express Edition には、Visual Studio と連携しての DB の取り扱いに便利な「ユーザーインスタンス」という機能があります。

(2014/6/11 追記:ユーザーインスタンスが非推奨になり、その代わりに SQL Server 2012/2014 Express LocalDB の使用が推奨されています。Visual Studio 2012, SQL Server Express 2012 以降では LocalDB が使用できますので、そちらを使用することをお勧めします。)

左の画像は、Visual Studio 2010 を利用して、Web サイトプロジェクトのソリューションエクスプローラで App_Data フォルダに SQL Server データベース (Database2.mdf) を追加し、サーバーエクスプローラで Database2.mdf を右クリックして「接続の変更」で内容を見たところです。

画像をクリックすると拡大画像が表示されます。データソース(S) が「Microsoft SQL Server データベースファイル (SqlClient)」となっていますが、これがユーザーインスタンスを利用した接続になります。

この「ユーザーインスタンス」と、実際の運用環境で使用する「既定のインスタンス」とはかなり違います。自分なりに簡単に違いをまとめたので、忘れないように書いておきます。

(1) 既定のインスタンス

SQL Server が起動された時点から存在するインスタンスで、実際の運用環境ではこれに接続して DB を利用します。

ただしこれを利用するには、事前に、かつ静的に、目的の DB をデーターベースエンジンにアタッチし、ログインアカウントを設定し、DB に対するアクセス権の設定などを行う必要があります。

他に「名前つきインスタンス」というのもありますが、特定の名前がついているだけで「既定のインスタンス」と同じです(細かいことを言えば違いますが、とりあえずここではそう思っていいです)。

(2) ユーザーインスタンス

SqlConnection.Open で自動的に PC にログインしているユーザー専用のインスタンスを作り(既定のインスタンスとは別に)、接続文字列で指定した DB を動的にアタッチし、そのユーザーに DB 所有者の特権を与える・・・という感じです。

それゆえアタッチとかログインなどの設定をしなくても、Access と同様に SQL Server に接続して DB を扱えるようになります。

ただし、リモート接続は不可とか、レプリケーションは無効とか、SQL Server 認証をサポートしないなど制約が多いので、Access のように使いたいという特殊なケースを除いては、これを実際に運用に使うことはありません。

ユーザーインスタンスの詳しい説明は MSDN ライブラリ「管理者以外のユーザーのためのユーザー インスタンス」にありますので、そちらも見てください。

Visual Studio を使って開発する場合、特に Express Edition では Visual Studio からは「ユーザーインスタンス」にしか接続できないという制限があります。ですから、MSDN フォーラムの書き込みなどを見ていると、アタッチとか、ログインアカウントの設定などは知らない人も多いようです。

また、自サーバー構築で、開発環境をそのままサーバーに導入して、接続文字列もそのまま使って、ユーザーインスタンスに接続している人もいるようです。

Tags:

SQL Server

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar