MSDE FunClub | 最終更新日 : 2000/08/22 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) | ||
【第12章136p 〜 138p掲載】 |
-- [SQL12_04.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、 -- アプリケーションロールの登録処理 -- を理解します -- -- カレントデータベースを MySampleTest にする USE MySampleTest GO -- (件処理されました)のメッセージを抑止する SET NOCOUNT ON GO -- ************************************** -- 私は sysadmin ですか? -- ************************************** IF( IS_SRVROLEMEMBER('sysadmin') <> 1 ) BEGIN RAISERROR('私には CREATE TABLE 権限を与えることはできません', 16 , 127 ) RETURN END GO -- ************************************************* -- 私は、db_owner または db_securityadmin ですか? -- ************************************************* IF( IS_MEMBER('db_owner') <> 1 AND IS_MEMBER('db_securityadmin') <> 1 ) BEGIN RAISERROR('私にはロールメンバ操作の権限がありません', 16 , 127 ) RETURN END GO -- ***************************************************************** -- アプリケーションロールがテーブルを所有しますので、それを削除する -- ***************************************************************** IF( (object_id('DRIDenyAPP.DRITest') IS NOT NULL) AND OBJECTPROPERTY( object_id('DRIDenyAPP.DRITest'),'ISTABLE') = 1 ) BEGIN -- テーブルを削除します DROP TABLE DRIDenyAPP.DRITest END GO -- ************************************************************ -- アプリケーションロールが登録済みのときは既存ロールを削除 -- ************************************************************ IF EXISTS ( SELECT name FROM SYSUSERS WHERE (isapprole = 1 AND name = 'DRIDenyAPP' ) ) BEGIN -- 既存のロールがありました。削除します。 EXEC sp_dropapprole 'DRIDenyAPP' END GO -- ************************************* -- アプリケーションロールを登録します -- ************************************* sp_addapprole 'DRIDenyAPP' , 'HIRAKEGOMA' 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 -- **************************** -- ロールの権限を設定します -- **************************** -- アプリケーションロールに、CREATE TABLE 権限を与える GRANT CREATE TABLE TO DRIdenyAPP -- DRIの外部参照を許可する GRANT REFERENCES( ID ) ON DRIGrantCheck to DRIdenyAPP GO