MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2000/08/11
Microsoft Data Engine FunClub
Since 2000.08.11
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻)
【第5章326p 〜 328p掲載】

-- [SQL05_05.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
--   (1)SQLServerのログインに myguest を登録します
--      既定データベースを MySampleTest にします
--   (2)MySampleTestデータベースにユーザ myguest 登録を行う
--   (3)ビュー表のベーステーブルである社員表へのアクセス禁止
--

-- ( 件処理されました)のメッセージの表示を抑止する
    SET NOCOUNT ON
GO


-- *******************************************************************
--            新規ログイン登録の権限が私にありますか?
--  sysadmin か securityadmin 固定サーバーロールに所属していますか?
-- *******************************************************************
   IF( (IS_SRVROLEMEMBER('sysadmin')<>1 ) 
        AND
       (IS_SRVROLEMEMBER('securityadmin')<>1) )
      BEGIN
          PRINT ''
          PRINT 'システム管理者権限(例えばsa)でログインしてください'
          RAISERROR( '私には、ログインの管理はできません' , 16 , 127 )
          RETURN
      END
GO

-- *******************************************************************
--               myguest ログインが未登録の時は登録します
--                 masterのsysloginsビュー表を直接見る
-- *******************************************************************
    PRINT ''
    IF NOT EXISTS( SELECT * FROM master.dbo.syslogins where loginname = 'myguest' )
       BEGIN
              PRINT 'myguestログインを登録します'
              EXECUTE sp_addlogin 'myguest',  -- login
                                    NULL   ,  -- password
                            'MySampleTest' ,  -- database
                                    NULL   ,  -- language
                                    NULL   ,  -- sid
                                    NULL      -- encryption_option
       END
GO


-- ****************************************************
--     カレントデータベースの接続先を定義する
-- ****************************************************
    USE MySampleTest
GO

-- ****************************************************
--     データベースユーザ登録の権限が私にありますか?
--  db_owner または db_accessadmin グループに許可される
-- ****************************************************
   IF ( (IS_MEMBER('db_owner') <> 1 ) AND (IS_MEMBER('db_accessadmin') <> 1) )
      BEGIN
          RAISERROR( '私にはデータベースユーザ登録の権限はありません' , 16 , 127 )
          RETURN
      END
GO


-- **************************************************************************
--     MySampleTestデータベースに myguest のデータベースユーザ登録を行う
-- **************************************************************************
    PRINT ''
    IF NOT EXISTS( SELECT * FROM sysusers where name = 'myguest' )
       BEGIN
              PRINT 'データベースユーザに登録しました'
              EXECUTE sp_grantdbaccess 'myguest' ,  -- login name
                                       'myguest'    -- user name

              -- データベースユーザを データベースロールに追加する場合の処理
              -- EXECUTE sp_addrolemember 'role' , 'myguest'
       END
GO

-- ****************************************************
-- オブジェクト操作権限の設定取り消しを行う権限がありますか?
--    db_owner , sysadmin ,db_securityadmin , 所有者 に許可される
-- ****************************************************
   DECLARE @UID SMALLINT
   -- オブジェクト所有者のユーザIDを取得する
   SELECT @UID = uid FROM sysobjects WHERE (name = '社員' AND type = 'U ')
   IF(
       (IS_SRVROLEMEMBER('sysadmin')  <> 1 ) AND
       (IS_MEMBER('db_owner')         <> 1 ) AND 
       (IS_MEMBER('db_securityadmin') <> 1 ) AND
       (@UID <> USER_ID() )
     )
      BEGIN
          RAISERROR( '私にはオブジェクトの権限設定を行う権利がありません' , 16 , 127 )
          RETURN
      END
GO

-- **************************************************************************
--          myguest ユーザの、社員表に対するアクセスを全て禁止します
-- **************************************************************************
    PRINT ''
    PRINT 'myguestユーザの、[社員]テーブルに対するすべての操作を禁止'
    -- 権限を明確に拒否する
    DENY  SELECT,INSERT,DELETE,UPDATE ON [社員] TO myguest

GO

-- **************************************************************************
--          myguest ユーザの、社員VIEW 表に対するアクセスを全て許可します
--            ベース表に対する権限は剥奪し、ビュー表の方を許可します
-- **************************************************************************
    PRINT ''
    PRINT 'myguestユーザの、[社員VIEW]ビュー表のすべての操作を許可'
    GRANT SELECT,INSERT,DELETE,UPDATE ON [社員VIEW] TO myguest
GO




技術評論社の書籍ガイドへ
上巻:ISBN4-7741-0965-7

ウィンドウを閉じる


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


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