きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

SQL Server Express EditionにpubsとNorthwindを追加する(その2)

前のエントリ、SQL Server Express EditionにpubsとNorthwindを追加する(その1) - 三日坊主と呼ばせない!日記の続きです。

コマンドプロンプトを使ってNorthwindデータベースをSQL Server 2008 Express Editionにアタッチします。

注意:ここでは、インストール環境は以下のようになっています。
SQL ServerSQL Server 2008
インスタンス名:SQLEXPRESS
SQL Serverのインストール先:localhost
認証:Windows認証

Northwindのアタッチ

NorthwindのMDFを、コマンドプロンプトからアタッチします。

基本的にはReadMe_SQL2000SampleDbScripts.htmに記述されている、コマンドラインを使用する方法(『Attaching the Pre-built Files by Using osql』)に従って実行しますが、Readmeでは従来のSQL Serverのバージョンから付属しているosql.exeを使用している部分をsqlcmd.exeを使った場合に読み替えてやってみました。

これは、SQL Server 2005以降ではosqlの使用が非推奨となり、代わりにsqlcmdの使用が推奨されているためです*1

1.MDFファイルを移動

※この行程は環境によっては必須ではないかもしれません。
Windows7の環境では、C:\SQL Server 2000 Sample Databases\NORTHWND.MDFを直接アタッチしようとすると、『物理ファイル "C:\SQL Server 2000 Sample Databases\NORTHWND.MDF" を開けません。オペレーティング システム エラー 5: "5(アクセスが拒否されました。)"。』というエラーメッセージが表示され、実行できませんでした。
そのため、必要なファイルをSQL ServerのDataディレクトリなどにコピーしてやります。

例:
以下のファイル、C:\SQL Server 2000 Sample Databases\配下のNORTHWND.MDFとNORTHWND.LDF*2を、SQL Serverのデータディレクトリ(C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data等)にコピー

2.コマンドプロンプトを起動する

普通にコマンドプロンプトを起動します。

3.以下のコマンドを実行

sqlcmd.exeにて、sp_attach_dbストアドプロシージャを使用してアタッチするコマンドを実行します。
例えば私の環境であれば、以下のようになります(表示の都合上、改行していますので改行は省いてください)。

sqlcmd  -E -S localhost\SQLEXPRESS -Q "EXEC sp_attach_db N'Northwind', 
N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NORTHWND.MDF'"

基本的には、ReadMe_SQL2000SampleDbScripts.htmに記載されているosqlを使った場合のコマンドに対して、osqlをsqlcmdに変更し、ホスト名やインスタンス名、ファイルのパスを調整しただけの物になります。
※一点、、ReadMe_SQL2000SampleDbScripts.htmにあるサンプルでは、『NORTHWND.MDF』ではなくて『NORTHWIND.MDF』となっている(errataかな?)ので、注意。



以上で、Northwindのインストールは完了です。

Visual StudioGUIを用いたpubsデータベースのインストールは、次のエントリへ。)

*1:このインストール程度はどっちでも良いと思うのですが、将来的に廃止されそうだし、今後はこちらが主流になりそうなので

*2:訂正。ログファイルは自動的に作成されるので不要でした。