| MSDE FunClub |
|
最終更新日 : 2000/08/22 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.22
|
|
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