C# Programming

SQL 2008SQL Server 2005 サンプルデーターベース

1.目次

1.目次
2.目的
3.参考書
4.サンプルデータベース
5.SQL Server 2000のサンプルデータベース Northwind, Pubs

2.目的

SQL Server 2005では、サンプルデータベースも一新されています。 サンプルデータベースがあると、いろいろ確認する時に便利です。

3.参考書

(1) AdventureWorks サンプルデータベースのダウンロード
(2) SQL Server 2005 Express Edition ドキュメントとサンプル
(3) Northwind and pubs Sample Databases for SQL Server 2000

4.サンプルデータベース

SQL2000では、Northwind, Pubsのサンプルデータベースがありましたが、SQL 2005ではAdventureWorksがサンプルデータベースとして提供されています。しかし、SQL2005を標準でインストールしただけでは、AdventureWorksはインストールされません。

用途 説明
サンプルデータベース

%Program Files%\Microsoft SQL Server\90\Samples

SqlServerSamples.msi
  • Analysis Services
  • Engine
  • Integrated Samples
  • Integrated Services
  • Notification Services
  • Replication
  • Reporting Services
AdventureWorksDB

OLTP database用

%Program Files%\Microsoft SQL Server\MSSQL.1\MSSQL\Data\

case-sensitive
AdventureWorksDB.msi
case-insensitive
AdventureWorksDBCI.msi
AdventureWorksBI

Analysis Services database and data warehouse 用

%Program Files%\Microsoft SQL Server\MSSQL.1\MSSQL\Data\

AdventureWorksBI.msi
(case-sensitive )
AdventureWorksBICI.ms
(case-insensitive )

インストールの方法

  • インストーラで追加インストールする。インストールの方法は、Books Online のAdventure Works→インストールを参照。
  • 参考書(1)よりAdventureWorksをダウンロードできます。
  • インストールすると[スタート]→[Microsoft SQL Server 2005]→[Documentation and Tutorials]→[Samples Directory] にディレクトリができる。

すでにインストールされている場合の再設定方法

  • スクリプトの再実行。
    インストールスクリプトは、次の場所にあります。
    %ProgramFiles%Microsoft SQL Server\90\Tools\Samples\AdventureWorks OLTP\instawdb.sql

 

 

C:\Program Files\Microsoft SQL Server\90\Samples\

5.SQL Server 2000のサンプルデータベース Northwind, Pubs

SQL Server 2000のサンプルデータベース Northwind, Pubsは、何かとあったほうが便利なので、入手方法とSQL Server 2005に入れる場合の注意です。

ダウンロードは参考文献(3)からどおぞ。

SQL2000SampleDb.msi をダウンロードして、実行すると [スタート]→[Microsoft SQL Server 2000 Sample Data Scripts]を開く。

NORTHWND.MDF, PUBS.MDF をMicrosoft SQL Server Management Studio からアタッチする。
 

T−SQLとSQL.CLRの使い分け

 

注意
Northwind のEmployee データベースでは、FK_Orders_Employees との参照制約があり、Employeeだけ削除することができません。このため、従業員を削除しようとすると、次のエラーが発生します。

'/GridView' アプリケーションでサーバー エラーが発生しました。

DELETE statement conflicted with REFERENCE constraint 'FK_Orders_Employees'. The conflict occurred in database 'Northwind', table 'Orders', column 'EmployeeID'. The statement has been terminated.

 

注意
Northwind のデータベースのデータ型で、ntext, image という古いデータ型を使用しています。そのままだと、次のようなエラーが出ます。
  • Data types ntext and nvarchar are incompatible in equal to operator.
  • Data types image and varbinary are incompatible in equal to operator.

この場合、Northwind のデータ型をntext→nvarchar, image→varbinary(MAX)に修正してあげる必要があります。

Visual Studio の Server Explorer から Emploeyeesテーブルで Open Table Definition でテーブルの定義を開き、Photo, Notes のデータ型を次のように変更します。

この場合、もう一度、上記のAdvanced SQL Generation Options で再生成してあげる必要があります。

 

新しく追加された機能(T-SQL)

TRY-CATCH が追加された。
BEGIN TRY
    RAISERROR (N'エラーレベルが10以下ではキャッチされません。', 
               10, -- Severity,
               1);

    RAISERROR (N'This is message %s %d.', -- Message text.
               11, -- Severity,
               1, -- State,
               N'number', -- First argument.
               5); -- Second argument.
END TRY
BEGIN CATCH
    PRINT N'エラーレベルが10を超えるエラーが発生しました'
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage
END CATCH
ただし、次の場合にはエラーがキャッチされないので注意が必要です。
  • 重大度が 10 以下の警告または情報メッセージ。
  • 重大度が 20 以上で、セッションに対する SQL Server データベース エンジン のタスク処理を終了させるエラー。重大度が 20 以上のエラーが発生し、データベース接続が切断されない場合、TRY...CATCH によってエラーが処理されます。
  • クライアントの割り込み要求や中断されたクライアント接続などのアテンション。
  • システム管理者による KILL ステートメントを使用したセッションの終了。

CATCH ブロックのスコープ内では、次のシステム関数を使用してエラーに関する情報を取得できます。

システム関数名 戻り値
ERROR_NUMBER() エラーの番号
ERROR_SEVERITY() 重大度
ERROR_STATE() エラー状態番号
ERROR_PROCEDURE() エラーが発生したストアド プロシージャまたはトリガの名前
ERROR_LINE() エラーを発生させたルーチン内の行番号
ERROR_MESSAGE() エラー メッセージ