| 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