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




技術評論社の書籍ガイドへ
下巻:ISBN4-7741-0966-5

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません