SQL Server 2000の最新のサービスパックであるSP3aでは、所有権の継承の考え方がデータベース間でも指定できます。SP3aの適用時(画面2)、あるいはSP3aの適用後には、SQL Server Enterprise Managerでコンピュータを右クリック-[プロパティ]-[セキュリティ]タブ(画面3)で、「組み合わせ所有権」を有効にするかどうかを指定することができます。この場合、所有者はデータベースユーザーでなくログインアカウントを意識します。
| ■ 画面2 組み合わせ所有権の指定(SQL Server 2000 SP3セットアップ時) |
 |
 |
| ■ 画面3 組み合わせ所有権の指定(SQL Server 2000 SP3適用後) |
 |
 |
たとえば、BRISBANEにDB_AとDB_Bというデータベースを用意し、下記のような構成でテーブルとビューを用意します。
| ユーザー |
DB |
テーブルに関する状況 |
ビューに関する状況 |
| UserA |
DB_A |
t_社員テーブル作成 |
− |
| DB_B |
- |
t_社員テーブルからv1_社員ビュー作成 |
| UserB |
DB_A |
- |
- |
| DB_B |
- |
t_社員テーブルからv2_社員ビュー作成 |
| UserC |
DB_A |
t_社員テーブルのselect権限なし |
- |
| DB_B |
- |
v1_社員ビュー、v2_社員ビューのselect権限あり |
|
●組み合わせ所有権を無効にした場合
クエリアナライザからBRISBANEにUserCでログインし、DB_B上のv1_社員ビューとv2_社員ビューを検索します(画面4)。
| ■ 画面4 UserCがv1_社員ビューとv2_社員ビューを検索(組み合わせ所有権は無効) |
 |
 |
【画面4】からおわかりのとおり、UserCはUserAが作成したv1_社員ビューも、UserBが作成したv2_社員ビューも検索できません。すなわち、組み合わせ所有権を無効にした場合は、必ず元のオブジェクトに対して適切な権限を持っていなければいけません。
●組み合わせ所有権を有効にした場合
クエリアナライザからBRISBANEにUserCでログインし、DB_B上のv1_社員ビューとv2_社員ビューを検索します(画面5)。
| ■ 画面5 UserCがv1_社員ビューとv2_社員ビューを検索(組み合わせ所有権は有効) |
 |
 |
【画面5】からおわかりのとおり、UserCはUserAが作成したv1_社員ビューは検索できますが、UserBが作成したv2_社員ビューは検索できません。この結果から、組み合わせ所有権を有効にした場合には、データベース内の所有権の継承と同じ動きをとることがわかります。
組み合わせ所有権は思わぬ危険(エラー)を招く恐れがあるため、無効にしておくことが推奨されています。詳しくは「マイクロソフトサポート技術情報-810474 [INF]
SQL Server 2000 Service Pack 3 での複数データベースの組み合わせ所有権の動作の変更点」を参照してください。 |