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

-- [SQL12_08.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
--            【ログインの一括削除処理】
--
--   不要になったログインを一括して削除します
--   システム管理者の方に、このSQL文を実行して頂きましょう

--  SELECT文などの実行によって、( 件処理されました)の表示抑制
    SET NOCOUNT ON
GO

--  ***************************************************
--   現在実行している人のログインセキュリティのチェック
--  ***************************************************
    DECLARE @F_SYSADMIN int , @F_SECUADMIN int
    
    -- サーバーロールsysadminに、あなたは所属していますか?
    SELECT @F_SYSADMIN  = IS_SRVROLEMEMBER( 'sysadmin' )
    
    -- サーバーロールsecurityadminに、あなたは所属していますか?
    SELECT @F_SECUADMIN = IS_SRVROLEMEMBER( 'securityadmin' )
    
    IF( (@F_SYSADMIN=0) AND (@F_SECUADMIN=0) )
       BEGIN
          -- 127番にすると、osqlやisqlではスクリプト強制終了です
          RAISERROR( '残念ですがログイン削除の権限がありません',16,127)
          RETURN
       END
GO

--  ***********************************************************
--     ログイン一括削除を行なうテーブルの定義とレコードの登録
--  ***********************************************************
    CREATE TABLE #LOGIN_LIST (
               lognm     sysname       -- 削除を行なうログイン名
    )

    --ログイン削除リストの定義
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest01' )
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest02' )
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest03' )
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest04' )
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest05' )
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest06' )
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest07' )
    INSERT INTO #LOGIN_LIST VALUES ( 'Guest08' )
    INSERT INTO #LOGIN_LIST VALUES ( 'sa2'     )

    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm01' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm02' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm03' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm04' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm05' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm06' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm07' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm08' )
    INSERT INTO #LOGIN_LIST VALUES ( 'JTSD3\nm09' )
GO

--  **************************
--    ログインの一括削除処理
--  **************************
    DECLARE @lognm     sysname         -- ログイン名

    --カーソルを定義する 
    DECLARE Log_CUR INSENSITIVE CURSOR
        FOR SELECT * FROM #LOGIN_LIST
        FOR READ ONLY

    -- カーソルを開く
    OPEN Log_CUR

    -- 先頭行の読み込み
    FETCH NEXT FROM Log_CUR INTO @lognm 

    WHILE( @@FETCH_STATUS = 0 )
      BEGIN
             --ログイン名に\記号があればNT認証です
             IF( CHARINDEX( '\' ,  @lognm ) = 0 )
                    EXEC sp_droplogin @lognm     --SQLServer認証を削除
             ELSE
                    EXEC sp_revokelogin @lognm   --NT認証を削除

             -- 次行の読み込み
             FETCH NEXT FROM Log_CUR INTO @lognm
      END

    -- カーソルを閉じる
    CLOSE Log_CUR

    -- カーソルを破棄する
    DEALLOCATE Log_CUR

    -- 一時テーブルを破棄する
    DROP TABLE  #LOGIN_LIST
GO




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

ウィンドウを閉じる


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


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