トランザクションとセキュリティ

(2005.11 更新)

(SQLServerを直接利用する実習は今回で最後の予定です。しかし念のため次回以降もパスワードは忘れないようにしてください。)


トランザクション

トランザクションとは、データベースでデータを処理する為の一連の処理手続きのことです。
例えば、これまでSQLサーバ上で実行したSQL文、

insert into SHIILE values ( '2003/12', 'ABC', 10)
update ZAIKO set KAZU=KAZU+10 where NAME = 'ABC'
select * from ZAIKO

などもトランザクションといえます
ただし、これまでの演習では、実は、

1つのSQL文 = 1つの処理 = 1つのトランザクション

として処理されていました。
つまり、上記のSQLの例では、 insert と update と select の各処理は、
 一つの命令の処理が完了 → データベースが更新される → 次の命令を処理
というように動作します。
 しかし、これでは問題が生じる場合があります。例えば、insert で品物の入庫数を記録後にデータベースや通信回線に異常が生じて update が実行時エラーになったとします。
 すると、入庫数は記録されているのに、在庫数の値が増えていないという矛盾が生じてしまいます。

そこで、上記の処理の様に、複数のSQL文を、

複数のSQL文 = 1連の処理 = 1つのトランザクション

としてデータベースで一括して処理する方法が必要になります。
要点:
■トランザクションの実行中にエラーが生じると、トランザクションの処理全体が失敗したことになり、データベースはトランザクションの実行前の状態の元に戻ります。
■トランザクションの実行中は、他のトランザクションが割り込んで処理されることはありません。
■トランザクションの実行中に、エラー処理をしてデータベースを処理前の状態に戻す(ロールバック)ことができます。


トランザクション処理とROLLBACK・COMMIT

マルチユーザ環境でのデータベースの問題点とその対処法について説明する。


SQLServerでトランザクション処理を行う為のコマンド

例)
BEGIN TRANSACTION
SQL文
SQL文
SQL文
COMMIT

例)
BEGIN TRANSACTION
SQL文
SQL文
SQL文
エラーが発生したら、ROLLBACK
SQL文
SQL文
COMMIT


演習課題1: トランザクションとロールバック処理

SQLサーバに接続し、以下を行う。


SQLサーバーの利用3

演習室PCとは別の場所にあるSQLサーバにネットワークで接続し、サーバー上のデータベースで作業を行う。


セキュリティ

データベースのユーザに、データベースの利用権限を設定するコマンドを紹介する。

 権限に指定可能なキーワード:
   ALL(全て)・SELECT・INSERT・UPDATE・DELETE・REFERENCESなど

 ユーザー:
   データベースを利用する際のユーザー名で権限を設定するユーザを指定する。
   PUBLIC というキーワードでユーザを指定すると、全データベースユーザに対して権限を設定できる。


演習課題2:

SQLサーバに接続し、以下を行う。


SQLサーバーの利用2(つづき)

以下の演習は、2名以上が組み(チーム)になって行うこと。組かたは各自に任せる
相手が見つけられない人は、こちらで指示するので申し出るように。
コンマとドット(ピリオド)が見わけにくいのでFONTを拡大してよく確認すること。

ここまでで、今回の演習は終了です。