MSDE FunClub | 最終更新日 : 2000/08/22 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) | ||
【第12章123p 〜 126p掲載】 |
-- [SQL12_01.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、 -- テーブル作成時に、DRI作成権限を与える -- ことを理解します -- -- カレントデータベースを MySampleTest にする USE MySampleTest GO -- (件処理されました)のメッセージを抑止する SET NOCOUNT ON GO -- ************************************** -- 私にログインの登録権限がありますか? -- ************************************** IF( IS_SRVROLEMEMBER('sysadmin') <> 1 AND IS_SRVROLEMEMBER('securityadmin') <> 1 ) BEGIN RAISERROR('私には新規ログインの作成権限がありません', 16 , 127 ) RETURN END GO -- ********************************** -- 私は dbo ユーザですか? -- ********************************** DECLARE @user_nm varchar(20) SELECT @user_nm = USER_NAME() -- データベースユーザ名 IF @user_nm <> 'dbo' BEGIN RAISERROR('あなたは ''%s'' です。dbo ユーザで実行してください', 16 , 127 , @user_nm ) RETURN END -- ****************************************** -- ログイン名 login01 と login02 を登録します -- ****************************************** -- ログインの登録検査は、masterデータベースのビュー表を見て -- 直接調べるのが簡単です IF NOT EXISTS ( SELECT name FROM master.dbo.syslogins WHERE ( name = 'login01' ) ) BEGIN -- ログインが無いので、login01 ログインを 登録します EXEC sp_addlogin @loginame = 'login01' , @passwd = NULL , @defdb = 'MySampleTest' -- 現在のカレントデータベースユーザとして登録する EXEC sp_grantdbaccess @loginame = 'login01' , @name_in_db = 'user01' -- データベースユーザ user01 に、CREATE TABLE 権限を与える GRANT CREATE TABLE TO user01 END -- login02 の 検査 IF NOT EXISTS ( SELECT name FROM master.dbo.syslogins WHERE ( name = 'login02' ) ) BEGIN -- ログインが無いので、login02 ログインを 登録します EXEC sp_addlogin @loginame = 'login02' , @passwd = NULL , @defdb = 'MySampleTest' -- 現在のカレントデータベースユーザとして登録する EXEC sp_grantdbaccess @loginame = 'login02' , @name_in_db = 'user02' -- データベースユーザ user02 に、CREATE TABLE 権限を与える GRANT CREATE TABLE TO user02 END GO -- ********************************** -- テーブルを新規に作成します -- ********************************** IF( (object_id('DRIGrantCheck') IS NOT NULL) AND OBJECTPROPERTY( object_id('DRIGrantCheck'),'ISTABLE') = 1 ) BEGIN -- 存在しているテーブルを削除する DROP TABLE DRIGrantCheck END GO CREATE TABLE DRIGrantCheck( ID INT Primary Key , DAT CHAR(10) ) GO -- ********************************** -- テーブルの権限を設定します -- ********************************** -- SELECT権限の設定(許可) -- GRANT SELECT ON DRIGrantCheck TO user01 -- GRANT SELECT ON DRIGrantCheck TO user02 -- user01に対して DRI を許可する GRANT REFERENCES( ID ) ON DRIGrantCheck to user01 -- user02に対して DRI を拒否する DENY REFERENCES( ID ) ON DRIGrantCheck to user02 GO