WebSurfer's Home

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

SQL Server Management Studio

by WebSurfer 2010年9月16日 16:07
SQL Server 2008 Management Studio Express

今回は、Visual Studio の Express 版を使ってのアプリ開発には SQL Server Management Studio(以下 Management Studio)は不要という話です。

というより、下手に使うと予期しない問題の解決にハマってしまい、無駄な時間を費やすことになりかねないので、手を出さないほうがいいですというお勧めです。(笑)

何故 Management Studio が不要かといえば、Visual Studio の Express 版は既定のインスタンスへの接続をサポートしていないからです。

Management Studio で、ウィザードを使ってデフォルト設定のままデータベースを作成すると、Instid\MSSQL\data フォルダに DB(mdf ファイル)が作成され、アタッチ済みの状態になるはずです。

即ち、DB を利用するためには、既定のインスタンスへの接続が必要となります。アタッチされた DB に対して、ユーザーインスタンスを利用した接続はできません。

その DB に、Visual Studio の Express 版を接続しようとすると、既定のインスタンスへの接続はサポートされておらず、ユーザーインスタンスは使えないわけですから、うまくいきません。それに気がつかないと、解決できないことにハマってしまい、無駄な時間を費やすことになるというわけです。

Visual Studio Professional 版は既定のインスタンスに接続できるので、不要とは言い切れません。でも、あまり使う機会はないような気がします。実際、自分は使っていません。

アプリ開発に必要な Management Studio の機能のほとんどが Visual Studio(Express 版を含む) に実装されています。ソリューションエクスプローラを使って SQL Server DB を新規作成できます。データベースエクスプローラを操作して、テーブルやストアドプロシージャの作成も可能です。

という訳で、経験浅い自分の場合ではありますが、今まで Management Studio がなくてアプリ開発に困った記憶はないです。

ただし、アプリ開発時ではなくて、実際の運用で既定のインスタンスへの接続が主になる場合は話は別です。

以前、自サーバーを構築した際の経験では、DB 生成クエリの実行、アタッチ/デタッチ、ログインアカウントの設定、ユーザーの権限の設定等に Management Studio は必須のツールでした。GUI で直感的に操作できるので、コマンドを覚える気のない自分には特にそうです。

Tags:

SQL Server

Visual Studio の接続

by WebSurfer 2010年9月15日 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):」の「変更」ボタンをクリックすると、下のような選択画面が表示されます。

Visual Studio からデータソースの選択

SQL Server を DB に利用する場合、選択は以下のとおりとなります。なお、VWD Express, VC# Express, VB Express では既定のインスタンスへの接続ができない(上の画像で「Microsoft SQL Server」のメニューがない)こと、SQL Server Express Edition 以外にはユーザーインスタンスの機能がないことに注意してください。

  1. App_Data フォルダに置いた DB のユーザーインスタンスに接続 ==> 「Microsoft SQL Server データベースファイル」を選択。
  2. ローカルまたはリモート 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 側の設定でどのようにでもできます。

Tags:

SQL Server

ユーザーインスタンス

by WebSurfer 2010年9月14日 21:54

Visual Studio での SQL Server 接続の設定

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

(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