第 4 章 SQL Server 2000 のユーザーと権限 ~ SQL Server 一年生 - データベース基礎編 - ~

NEC

Eラーニング事業部

鈴木 智行

2003 年 6 月 2 日

目次

1. SQL Server 2000 のユーザー 1. SQL Server 2000 のユーザー
2. ログイン ID 2. ログイン ID
3. 認証モード 3. 認証モード
4. データベースユーザー 4. データベースユーザー
5. 権限 5. 権限
6. ロール 6. ロール
7. SQL Server Enterprise Manager 使用時の認証 7. SQL Server Enterprise Manager 使用時の認証
8.まとめ 8.まとめ

1. SQL Server 2000 のユーザー

SQL Server 2000 のデータベースは誰でもアクセスできるわけでなく、Windows 2000 を利用する場合と同様に適切なユーザーでない限り利用できません。

しかし SQL Server 2000 には「ログイン ID」と「データベースユーザー」という 2 種類のユーザーがあり誤解を招きやすいので、しっかり上記のユーザーの違いと関係を覚えてください。

2. ログイン ID

まずは SQL Server 2000 を使用することができる利用者 (ログイン ID) を登録する必要があります。ログイン ID がなければ SQL Server 2000 を使うことはできません (図 2-0-1)。

図

2-0-1 ログイン ID を提示しなければ SQL Server 2000 を使用できない

私たちがSQL Server 2000を使用する際には、必ずログインIDを提示(ログイン)します。この提示を受けSQL Server 2000は登録されているログインIDと比較し、正しければSQL Server 2000の使用を許可します。この一連の確認作業のことを認証と呼び、SQL Server 2000から認証されたログインIDはSQL Server 2000を使用することができます(図2-0-2)。

図

2-0-2 提示したログイン ID が正しければ SQL Server 2000 を使用できる

このように SQL Server 2000 から認証を受ける必要があるのですが、その方法は 1 つではなく SQL Server 2000 の認証方法に応じて 2 種類のログイン ID (SQL Server 認証ログイン、Windows 認証ログイン) を使うことができます。例えばクエリアナライザを起動したときには画面 2-0-3 のようにどちらのログイン ID を使用するかを選択できます。

画面

画面 2-0-3 ログイン時に認証方法を選択する

2-1 SQL Server認証ログイン

SQL Server 認証ログインは SQL Server 4.21a から用いられているログイン ID です。「ログイン名」と「パスワード」から構成され、この情報を事前に SQL Server 2000 に登録します。
では SQL Server 認証ログインを作成して SQL Server 2000 に登録してみましょう。SQL Server Enterprise Manager の左ペインから [コンソールルート] - [Microsoft SQL Servers] - [SQL Server グループ] - [ComputerName] - [セキュリティ] と + 記号を展開し、[ログイン] をハイライト (選択) 状態にします。この状態で右クリックし、メニューから [新規ログイン(L)] を選択します (画面 2-1-1)。

画面

画面 2-1-1 新規ログイン ID を作成する

[SQL Serverログインのプロパティ-新規ログイン] のウィンドウで SQL Server認証(S) を選択し、名前(N) (ログイン名に対応) とパスワード(P) を指定します。ここでは名前に「SQLUser」、パスワードに「password」を設定して [OK] ボタンを押下し (画面 2-1-2)、SQL Server 認証ログインを登録します (実際には [OK] ボタンを押下後、もう一度パスワードを入力する必要があります)。

画面

画面 2-1-2 SQLUser SQL 認証ログインを作成する

ログイン時に SQL Server 認証を選択した場合は SQL Server 認証ログインを使用し、SQL Server 2000 からの認証を受けて SQL Server 2000 を使用します (図 2-1-3)。

図

2-1-3 SQL Server 認証ログインは SQL Server 2000 が認証する

2-2 Windows認証ログイン

SQL Server 2000 は Windows プラットフォームで動作する製品なので、通常は SQL Server 2000 を使用する前に Windows にログオンしている場合が多いと思います。SQL Server 認証ログインはこの Windows アカウントとは無関係ですが、Windows 認証ログインは SQL Server 2000 の使用時にこの Windows アカウントを使う方法です。もちろん全ての Windows アカウントが SQL Server を使用するわけではないので、SQL Server にアクセスが必要な Windows アカウント (Windows 認証ログイン) を事前に SQL Server 2000 に登録します。

では Windows 認証ログインを作成して SQL Server 2000 に登録してみましょう。SQL Server Enterprise Manager の左ペインから [ログイン] をハイライト (選択) 状態にします。この状態で右クリックし、メニューから [新規ログイン(L)] を選択します。[SQL Serverログインのプロパティ-新規ログイン] のウィンドウで Windows認証(W) が選択されていることを確認し、まずはドメイン (M) で Windows アカウントが格納されているディレクトリデータベースを選択します。Windows アカウントがローカルディレクトリデータベースで管理されている場合には「コンピュータ名」を、コンピュータがドメインに参加し Windows アカウントが Active Directory で管理されている場合には「ドメイン名」を選択します (画面 2-2-1)。

画面

画面 2-2-1 コンピュータ名やドメイン名   (ドメインに参加している場合)   が選択できる

ドメイン(M) の選択を終えると、名前(N) (ログイン名に対応) に「(選択したコンピュータ名orドメイン名)\」と表示されるので、右にあるボタンを押下します。すると選択したディレクトリデータベースが表示されるので名前(N) から Windows アカウントを選択し、[追加(A)] ボタンで追加する名前(D) に表示されたことを確認したら [OK] ボタンを押下します。(画面 2-2-2)

画面

画面 2-2-2 Windows 認証ログインでは Windows アカウントを選択する

この後パスワード(P) を指定する必要はありません。[OK] ボタンを押下し Windows 認証ログインを登録します。今回はドメイン名に「ComputerName」、名前に「ComputerName\W2KUser」(W2KUser はディレクトリデータベースに作成済)を設定して [OK] ボタンを押下し、Windows 認証ログインを登録します。

ログイン時に Windows 認証を選択した場合は Windows 認証ログインを使用します。Windows 認証ログインは既に Windows に認証を受けているので SQL Server 2000 は Windows を信頼し、Windows から認証情報を引き継ぐことで Windows 認証ログインが SQL Server 2000 を使用できるようにします (図 2-2-3)。SQL Server 2000 が Windows 認証ログインを直接認証するわけではありません。

図

2-2-3 Windows 認証ログインは Windows が認証し、 SQL Server 2000 が引き継ぐ

Windows 認証の利点は画面 2-2-2 でおわかりのとおり、Windows 認証ログインとしてユーザーだけでなくグループも選択できることです。SQL Server 内で同じ作業が必要な複数の Windows ユーザーアカウントは各々を登録しなくても、ディレクトリデータベース上でグループとしてまとめ、グループアカウントを Windows 認証ログインに登録しておけばグループに所属している Windows ユーザーアカウントは SQL Server 2000 を利用することが可能になります (図 2-2-4)。

図

2-2-4 Windows グループアカウントを登録しておけば、所属する Windows ユーザーアカウントはログインできる

このように Windows 認証ログインは Windows のユーザー管理と統合して扱うことができます。

2-3 既定のログインID

SQL Server 2000 にはインストール時に作成される既定のログイン ID が 2 つ存在します。
1 つめの「sa(system Administrator)」ログイン ID は SQL Server 認証ログインであり、「sa」ログイン ID でログインすれば SQL Server 2000 内で何でもできるシステム管理者として振舞うことが可能です。「sa」ログイン ID は SQL Server のインストールの仕方によってはパスワードが設定されていないケースがあり、最もセキュリティが緩くなるので必ず「sa」ログイン ID にはインストール時あるいはインストール後に複雑なパスワードを設定してください。「sa」ログイン ID のパスワード変更は、SQL Server Enterprise Manager の左ペインから [ログイン] をハイライト (選択) 状態にします。この状態で右ペインから「sa」を選択して右クリックし、メニューから [プロパティ(R)] を選択します (画面 2-3-1)。

画面

画面 2-3-1 sa 」ログイン ID のプロパティを変更する

[SQL Serverログインのプロパティ-sa] のウィンドウでパスワード(P) に新しいパスワードを設定して [OK] ボタンを押下し、「sa」ログイン ID のパスワードを変更します (実際には [OK] ボタンを押下後、もう一度パスワードを入力する必要があります)。

2 つめの「BUILTIN\Administrators」ログイン ID は Windows 認証ログインであり、「ビルトインAdministratorsグループ」を表します。デフォルトで「BUILTIN\Administrators」ログインIDは「sa」ログイン ID と同等の権限を持っています。すなわち Windows の管理者グループメンバは SQL Server 2000 の管理ができるということです。したがって Windows の管理者と SQL Server 2000 の管理者が異なる場合は「BUILTIN\Administrators」ログイン ID がもつ権限を変更する必要があります。変更方法は本コラムの「6. ロール」で紹介します。

3. 認証モード

SQL Server 認証ログインと Windows 認証ログインを紹介しましたが、SQL Server 2000 にアクセスする時には認証モードに気をつける必要があります。認証モードとは SQL Server 2000が "どの種類のログインを受け付けるか" という ログイン許可モードであり、拒否されている場合は、いくら正しいログイン名、パスワードであったとしても SQL Server 2000 へのアクセスはできません (図 3-1)。

図

3-1 ログイン ID が正しくてもログインできない

ログイン ID と認証モードの関係は表 3-2 のとおりです。

 

Windows 認証モード

混合認証モード

SQL Server 認証ログイン

× (拒否)

○ (許可)

Windows 認証ログイン

○ (許可)

○ (許可)

3-2

もちろん「sa」ログイン ID であっても Windows 認証モードが設定されている場合はログインできないので注意してください。

認証モードは SQL Server 2000 のインストール時に設定できますが、インストール後でも変更することが可能です。特に SQL Server 2000 のインストール時に何もしていなければ Windows 認証モードが設定されています。認証モードを変更したい場合は SQL Server Enterprise Manager の左ペインから [ComputerName] をハイライト (選択) 状態にします。この状態で右クリックし、メニューから [プロパティ(R)] を選択します。[SQL Serverプロパティ(設定)-ComputerName] のウィンドウのセキュリティタブで変更します (画面 3-2)。

画面

画面 3-2 Windows 認証モードから混合認証モードに変更

認証モードを変更した場合は MSSQLServer サービスの再起動が必要ですが、SQL Server 2000 では画面 3-3 のウィンドウで「はい(Y)」を押下することで、手動で再起動しなくても自動で再起動することができます。

画面

画面 3-3 認証モード変更時には MSSQLServer サービスの再起動が必要

4. データベースユーザー

正しいログイン ID でログインしたとしても SQL Server 2000 にアクセスはできますが、SQL Server 2000 のデータベースが利用できるとは限りません。データベースにアクセスするためには使用したいデータベース毎にログイン ID とは別のユーザー (データベースユーザー) を登録する必要があります。データベースユーザーとログイン ID は "関連づけ" を行なうことで、どのログイン ID がどのデータベースを使用できるかを制御します (図 4-0-1)。

図

4-0-1 データベースユーザーが登録され、ログイン ID に関連づけされているデータベースを使用できる

では「第 3 章 SQL Server 2000 のデータベースとテーブル」の「3. データベースの作成」で作成した商品データベースに「SQLUser」と「W2KUser」のログイン ID に関連づけられた「SQLDBUser」と「W2KDBUser」というデータベースユーザーを作成してみましょう。SQL Server Enterprise Manager の左ペインから [データベース] - [商品] と + 記号を展開し、[ユーザー] をハイライト (選択) 状態にします。この状態で右クリックし、メニューから [新規データベースユーザー(U)]を選択します (画面 4-0-2)。

画面

画面 4-0-2 新規データベースユーザーを作成する

[データベースユーザーのプロパティ-新規ユーザー] のウィンドウで、ユーザー名(U) にデータベースユーザー名を入力し、ログイン名(L) でログイン ID を選択して関連づけを行ないます。ここではログイン名に「SQLUser」、ユーザー名に「SQLDBUser」を設定して[OK]ボタンを押下し (画面 4-0-3)、SQLServer 認証ログインに関連づけられたデータベースユーザーを登録します。同様にしてログイン名に「ComputerName \W2KUser」、ユーザー名に「W2KDBUser」として Windows 認証ログインに関連づけられたデータベースユーザーも登録します。

画面

画面 4-0-3 SQLDBUser 」データベースユーザーを作成する

4-1 既定のデータベースユーザー

SQL Server 2000 にはインストール時に作成される「dbo」という既定のデータベースユーザーが存在します。「dbo」はデータベース所有者 (DataBase Owner) であり、データベース内でデータベース管理者として振舞うことができます。「dbo」にはデータベースを作成したログイン ID が自動的に関連付けられます (図 4-1-1)。

図

4-1-1 データベースを作成したログイン ID dbo に関連づけられる

4-2 特殊なデータベースユーザー

データベースにデータベースユーザーが登録され、ログイン ID に関連づけられていないと、そのログイン ID はデータベースにアクセスできません。しかしデータベースがあまりセキュリティを意識する必要がなく大量のログイン ID がアクセスしたい場合などは、いちいちデータベースユーザーを登録して関連づけを行っていくのは手間がかかります。このようなケースで使用できるのが「guest」データベースユーザーです。「guest」をデータベースに登録しておけば、そのデータベースにデータベースユーザーが登録されておらず、関連づけられていないログイン ID は全て自動的に「guest」に関連づけられ、データベースにアクセスできるようになります (図 4-1-2)。

図

4-1-2 他のデータベースユーザーに関連づいていなければ guest に関連づけされる

5. 権限

データベースユーザーを作成すれば、SQL Server 2000 のデータベースを使用できる準備が整いますが、データベースをどのように操作できるかはログイン ID やデータベースユーザーが持つ権限によって決定されます。すなわち権限がなければいくらログイン ID が正しくても、データベースにデータベースユーザーが登録されていたとしても、データベースを操作することはできません (図 5-0-1)。

図

5-0-1 データベースユーザーが登録されているだけではデータベースは操作できない

5-1 権限の種類

権限にはステートメント権限とオブジェクト権限があります。ステートメント権限はデータベースの管理操作を行うための権限で表 5-1-1 のとおりです。

ステートメント権限

説明

CREATE DATABASE

データベースを作成する

CREATE DEFAULT

デフォルトを作成する

CREATE FUNCTION

ユーザー定義関数を作成する

CREATE PROCEDURE

ストアドプロシージャを作成する

CREATE RULE

ルールを作成する

CREATE TABLE

テーブルを作成する

CREATE VIEW

ビューを作成する

BACKUP DATABASE

データベースをバックアップする

BACKUP LOG

トランザウションログをバックアップする

5-1-1

オブジェクト権限はデータベースオブジェクト (データベースの構成要素) を操作するための権限で表 5-1-2 のとおりです。

オブジェクト権限

対象となるオブジェクト

説明

SELECT

テーブル、ビュー

SELECTステートメントが実行可

INSERT

テーブル、ビュー

INSERTステートメントが実行可

UPDATE

テーブル、ビュー

UPDATEステートメントが実行可

DELETE

テーブル、ビュー

DELETEステートメントが実行可

REFERENCES

テーブル、ビュー、
ユーザー定義関数

外部キーでテーブルの主キーや一意な列を参照可

EXECUTE

ストアドプロシージャ

EXECUTE ステートメントが実行可

ユーザー定義関数

SELECT ステートメントが実行可

5-1-2

5-3 権限の設定

ステートメント権限とオブジェクト権限は設定によって、権限を許可 (GRANT) したり拒否 (DENY) したり取消 (REVOKE) たりすることができます。

権限が許可されていれば対象の操作が実行可能であり、拒否されていれば実行不可となります。権限が許可されている状態や拒否されている状態は取り消すことが可能です。

では「W2KDBUser」データベースユーザーに商品データベースでの「CREATE TABLE」 (テーブル作成) ステートメント権限を許可してみましょう。SQL Server Enterprise Manager の左ペインから [データベース] の + 記号を展開し、[商品] をハイライト (選択) 状態にします。この状態で右クリックし、メニューから [プロパティ(R)] を選択して [権限] タブを選択します。[商品プロパティ] ウィンドウで「W2KDBUser」に対し、テーブルの作成の部分を 1 回クリックします。これがステートメント権限が許可された状態です (画面 5-3-1)。

画面

画面 5-3-1 W2KDBUser 」データベースユーザーに「 CREATE TABLE 」ステートメント権限を許可する

今回の設定はこれで終わりですが、ちなみにもう 1 回クリックすると権限が拒否された状態になります (画面 5-3-2)。

画面

画面 5-3-2 W2KDBUser 」データベースユーザーに「 CREATE TABLE 」ステートメント権限を拒否する

さらにもう 1 回クリックすると権限が取り消された状態になります (画面 5-3-3)。

画面

画面 5-3-3 W2KDBUser 」データベースユーザーから権限を取り消す

次に「SQLDBUser」データベースユーザーに商品データベースの商品_tbl テーブルに対する「SELECT」オブジェクト権限を許可してみましょう。SQL Server Enterprise Manager の左ペインから [データベース] - [商品] の + 記号を展開し、[テーブル] をハイライト (選択) 状態にします。右ペインで商品_tbl テーブルをハイライト (選択) 状態にして右クリックし、メニューから [すべてのタスク(K)] - [権限の管理(P)] を選択します。[オブジェクトのプロパティ-商品] プロパティウィンドウでオブジェクト「商品_tbl」について「SQLDBUser」に対し、SELECT の部分を 1 回クリックします。これがオブジェクト権限が許可された状態です (画面 5-3-4)。

画面

画面 5-3-4 SQLDBUser 」データベースユーザーに「 SELECT 」オブジェクト権限を許可する

DENY (権限を拒否する) および REVOKE (権限を取り消す) に関する操作方法はステートメント権限と同様なので省略します。

6. ロール

権限の与え方は上記の方法だけではありません。SQL Server 7.0 から "ロール" が導入されました。"ロール" は既に権限が与えられたグループです。このロールを使用すると Windows のユーザー管理手法である AGLP と同様に SQL Server のユーザーを簡単に管理することができます (図 6-0-1)。

図

6-0-1 AGLP でユーザーやグループおよび権限を管理する

ユーザーに直接権限を与えることもできますが、権限を持っているロールにユーザーを所属させることによって権限を間接的に与えることができます。ロールには権限の適用範囲によってサーバーロールとデータベースロールの 2 種類存在します。

6-1 サーバーロール

サーバーロールは SQL Server 全体に関わる管理操作を行う権限を持ったロールであり、ロールに所属できるのはログイン ID のみです。データベースユーザーは所属できないので注意してください。サーバーロールは表 6-1-1 のとおりです。

オブジェクト権限

説明

Sysadmin

SQL Server 2000で全ての操作を行うことが可能(saと同じ)

Serveradmin

環境オプションの設定とシャットダウンが可能

Setupadmin

リンクサーバーと起動プロシージャの管理が可能

Securityadmin

ログインやパスワードの管理が可能

Processadmin

SQL Server 2000内で実行されるプロセスの管理が可能

Dbcreator

データベースの作成、変更、削除が可能

Diskadmin

ディスクファイルの管理が可能

Bulkadmin

BULK INSERTステートメントが実行可能

6-1-1

個々のサーバーロールは権限が決まっており、役割の追加、削除といったことができません。こういった意味から表 6-1-1 のサーバーロールのことを「固定サーバーロール」と呼びます。サーバーロールには固定サーバーロールしかありません。

では「ComputerName\W2KUser」ログイン ID を「sysadmin」固定サーバーロールに所属させてみましょう。SQL Server Enterprise Manager の左ペインから [セキュリティ] の + 記号を展開し、[サーバーロール] をハイライト (選択) 状態にします。右ペインで System Administrators 固定サーバーロールをハイライト (選択) 状態にして右クリックし、メニューから [プロパティ(R)] を選択します。[サーバロールのプロパティ-sysadmin] プロパティウィンドウで「追加(A)」ボタンを押下して、追加するログインとして「ComputerName\W2KUser」をハイライト (選択) 状態にして「OK」ボタンを押下します。これで sysadmin ロールに「ComputerName\W2KUser」ログイン ID が追加されました (画面 6-1-2)。

画面

画面 6-1-2 sysadmin ロールに「 ComputerName\W2KUser 」ログイン ID が追加された

画面 6-1-2 からおわかりのとおり、sysadmin にはデフォルトで「BUILTIN\Administrators」ログイン ID が所属しています。Windows の管理者が SQL Server 2000 の管理者でない場合には、sysadmin ロールから「BUILTIN\Administrators」ログイン ID を削除し、必要に応じて他のロールに所属するなり、ステートメント権限やオブジェクト権限を与えるようにしてください。

6-2 固定データベースロール

固定データベースロールはデータベース内での管理操作とテーブルに対する操作を行う権限を持ったロールであり、ロールに所属できるのはデータベースユーザーのみです。ログイン ID は所属できないので注意してください。データベースロールは表 6-2-1 のとおりです。

データベースロール

説明

db_owner

データベース内で全ての操作を行うことが可能 (dbo と同じ)

db_accessadmin

データベースユーザーの追加と削除が可能

db_securityadmin

権限やロールの管理が可能

db_ddladmin

DDL の実行が可能

db_backupoperator

BACKUP ステートメントの実行が可能

db_datareader

データベース内の全てのテーブルの選択が可能

db_datawriter

データベース内の全てのテーブルの変更が可能

db_denydatareader

データベース内の全てのテーブルの選択が不可

db_denydatawriter

データベース内の全てのテーブルの変更が不可

6-2-1

個々のデータベースロールは権限が決まっており、役割の追加、削除といったことができません。こういった意味から表 6-2-1 のデータベースロールのことを「固定データベースロール」と呼びます。

では「SQLDBUser」データベースユーザーを「db_datawriter」固定データベースロールに所属させてみましょう。SQL Server Enterprise Manager の左ペインから [データベース] - [商品] の + 記号を展開し、[ロール] をハイライト (選択) 状態にします。右ペインで db_datawriter 固定データベースロールをハイライト (選択) 状態にして右クリックし、メニューから [プロパティ(R)] を選択します。[データベースロールのプロパティ- db_datawriter] プロパティウィンドウで「追加(D)」ボタンを押下して、追加するデータベースユーザーとして「SQLDBUser」をハイライト (選択) 状態にして「OK」ボタンを押下します。これで db_datawriter ロールに「SQLDBUser」データベースユーザーが追加されました (画面 6-1-3)。

画面

画面 6-1-3 db_datawriter ロールに「 SQLDBUser 」データベースユーザーが追加された

6.3 特殊なデータベースロール

「6.2固定データベースロール」で紹介した固定データベースロールの他に「public」ロールという特殊なデータベースロールが存在します。「public」ロールは Windows の everyone グループと同じ意味をもち、データベースユーザー全員が所属しているロールです。「public」ロールからの所属を削除することはできません。

SQL Server 2000 のインストール直後では「public」ロールは権限をもっていないので、「5. 権限」で紹介したステートメント権限やオブジェクト権限をデータベースユーザー全員に対して設定したいときなどに活用してください。

6.4 ユーザー定義データベースロール

固定データベースロールや「public」ロールだけで権限の管理ができればよいのですが、これだけではロールを使って細かい権限の設定はできません。そこでデータベースロールに関しては私たちが新規に作成することができます。

では「商品」データベースに「入庫」データベースロールを作成してみましょう。SQL Server Enterprise Manager の左ペインから [データベース] - [商品] の + 記号を展開し、[ロール] をハイライト (選択) 状態にし、この状態で右クリックしてメニューから [新規データベースロール(R)] を選択します。[データベースロールのプロパティ- 新規ロール] プロパティウィンドウで名前(N) に「入庫」と入力して「OK」ボタンを押下します (画面 6-4-1)。これで「商品」データベースに「入庫」データベースロールが作成されました

画面

画面 6-4-1 「商品」データベースに「入庫」データベースロールを作成する

ユーザー定義データベースロールを作成した直後は、もちろん権限をもっていませんし所属しているデータベースユーザーもいません。

したがってこの後の作業としては必要に応じてステートメント権限やオブジェクト権限を設定したり、適切なユーザーを所属させて管理を行ってください。

7. SQL Server Enterprise Manager 使用時の認証

もちろん SQL Server Enterprise Manager を使用するときもログインが必要です。しかし SQL Server Enterprise Manager の左ペインから [コンソールルート] - [Microsoft SQL Servers] - [SQL Server グループ] - [ComputerName] と + 記号を展開した時に、ログインが自動的に発生するため、利用の際にはあまり意識することがありません。認証方法は SQL Server 毎に固定されており、[ComputerName] をハイライト (選択) 状態にして右クリックし、メニューから [SQL Server登録プロパティの編集(E)] を選択した際に表示される [登録されたSQL Serverプロパティ] ウィンドウの接続で確認できます (画面 7-1)。

画面

画面 7-1 認証方法は固定されている

デフォルトは「Windows認証を使用(W)」にチェックされているので、今現在ログオンしている Windows ユーザーで使用していることになります。SQL Server Enterprise Manager を使用する際に SQL Server 認証ログインを利用したければ、「SQL Server認証を使用(Q)」をチェックし、ログイン名とパスワードを指定します。毎回 SQL Server 認証ログインを変更したい場合は「ログイン名とパスワードを毎回入力する」にチェックしてください。

では今回は「SQLUser」ログイン ID で SQL Server Enterprise Manager を使用するように設定を変更します。画面 7-1 の [登録されたSQL Serverプロパティ] ウィンドウで、「SQL Server認証を使用(Q)」をチェックし、ログイン名(L) に「SQLUser」とパスワード(A) に「password」を指定し、[OK] ボタンを押下します。このとき既に SQL Server 2000 にログインしている場合は接続解除を求めるウィンドウが表示されるので (画面 7-2)、「はい(Y)」を選択してください。

画面

画面 7-2 認証方法の変更には接続解除が必要である

現在「SQLUser」ログイン ID(「SQLDBUser」データベースユーザー)は商品データベースに対して

  1. 商品_tbl テーブルの「SELECTオブジェクト権限」

  2. 商品データベースの「db_datawriter」固定データベースロールに所属

となっています。

したがって商品データベースに対して新規テーブルを作成することはできません。

SQL Server Enterprise Manager の左ペインから [データベース] - [商品] の + 記号を展開し、[テーブル] をハイライト (選択) 状態にし、この状態で右クリックします。しかしメニューから [新規テーブル(B)] が選択できるでしょうか?グレー表示になっていて選択できないことがわかります (画面 7-3)。

画面

画面 7-3 権限を持っていないので操作ができない

また右ペインから商品_tbl テーブルをハイライト (選択) 状態にして右クリックし、メニューから [テーブルを開く(O)] - [全行を返す(A)] を選択します。するとデータが表示され、例えばデータを上書きすることも可能だということがわかります (画面 7-4)。

画面

画面 7-4 権限を持っているのでデータの表示や変更ができる

8.まとめ

第 1 章 ~ 第 4 章では、まず SQL Server の概要を理解していただいた上で SQL Server にデータベースを構築し、さらにユーザーを作成してデータベース上のテーブルにアクセスできるようにご紹介したつもりです。これで皆さんも "ログインできない!" とか "データベースにアクセスできない!" といったトラブルを解決できるのではないでしょうか?

ただし SQL Server はこれだけではありません。やっぱりデータベースは奥が深いものです。もっと細かい知識は SQL Books Online や他の参考書、コラムなどを参考にしていただき、自分にとって必要な内容を学習してください。またこのくらいデータベース製品に触れていただければ、正規化やデータモデリンングといった設計に関わる内容にもとっつき易くなったのではないでしょうか?

システムの形態がいろいろ変化しても、やはりデータベースというのはデータを管理する重要なコンポーネントです。ぜひ SQL Server をご愛顧いただいて SQL Server のプロを目指してください。

dts.jpg

鈴木   智行: NEC Eラーニング事業部に所属。入社以来、インストラクタとして教育業務に従事。汎用機、UNIX を経て、1994 年より マイクロソフト認定トレーナー (MCT) として、管理者向け教育を担当。SQL Server は 4.21a から携わっており、現在は主に SQL Server 2000 に関わるデータベース教育を中心に担当。 Windows 2000 および SQL Server 2000 での MCSE,MCDBA を取得しており、情報処理技術者試験のテクニカルエンジニア(データベース)も取得済。 SQL Server の優位性をアピールできるように Oracle Gold も取得した。今後 Oracle Plutinum を取得予定し、日々データベースを極めることに努力している。