| MSDE FunClub |
|
最終更新日 : 2000/05/30 |
|
Microsoft Data Engine FunClub
|
Since 2000.05.29
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) |
|
【第1章36p 〜 38p掲載】 |
-- [SQL01_01.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
-- (1)新しいログインを1人分登録します
-- (2)そのログインにDatabase Creatorsサーバーロールを割り当てます
--
-- [注意]
-- このSQL文の実行では、 Security Administrators の権限が必要です
-- システム管理者の方に、このSQL文を実行して頂きましょう
-- SELECT文などの実行によって、( 件処理されました)の表示を抑制する
SET NOCOUNT ON
-- GO命令で、バッチ処理の区切り(1個のバッチの終わり)
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命令で、バッチ処理の区切り(1個のバッチの終わり)
GO
-- ************************
-- すでに登録済みですか?
-- ************************
IF EXISTS( SELECT name FROM master.dbo.syslogins WHERE name = 'simon' )
BEGIN
PRINT 'ログイン名simonは、すでに登録されています'
PRINT '登録エラーが発生しますので、処理を中止します'
RAISERROR( 'ログイン名simon は登録済み!!',0,127)
RETURN
END
GO
-- ************************
-- ログインの作成処理
-- ************************
DECLARE @RETVAL int -- ストアドプロシージャの戻り値を受け取る
DECLARE @LOGIN_NAME varchar(20) -- ログイン名
DECLARE @LOGIN_PSWD varchar(20) -- パスワード
-- 登録するログイン名とパスワードの定義
SELECT @LOGIN_NAME = 'simon' -- ログイン名
SELECT @LOGIN_PSWD = 'petero' -- パスワード
-- クライアント側に改行コードを送信(コンソールの改行)
PRINT ''
-- ログインを1件分登録するストアドプロシージャの実行
EXEC @RETVAL = sp_addlogin
@LOGIN_NAME , --ログインの名前
@LOGIN_PSWD , --パスワードを省略するときは NULL です
'master' , --既定のデータベース先
NULL , --既定言語(デフォルト)
NULL , --セキュリティID番号(デフォルト)
NULL --パスワードを暗号化して登録する
--ストアドプロシージャの実行結果は失敗しましたか?
IF( @RETVAL = 1 )
BEGIN
RAISERROR('**** ''%s'' **** ログインの登録に失敗しました',16,127,@LOGIN_NAME)
RETURN --失敗したので中止します
END
ELSE
BEGIN
PRINT ' [' + @LOGIN_NAME + '] ログインを登録しました'
END
-- ***********************************************************
-- 今登録したログインに対して固定サーバーロールに所属させる
-- データベース作成権限を与える
-- ***********************************************************
-- ストアドプロシージャを実行して、dbcreator に登録する
EXEC @RETVAL = sp_addsrvrolemember @LOGIN_NAME , 'dbcreator'
IF( @RETVAL = 1 )
BEGIN
RAISERROR(' ''%s'' に dbcreator権限を付与することを失敗しました',
16 , 127 , @LOGIN_NAME )
RETURN
END
ELSE
BEGIN
PRINT ' [' + @LOGIN_NAME + '] ログインに権限を付与しました'
PRINT ' ログインsimon パスワードpetero を正常に登録しました'
END
-- GO命令で、バッチ処理の区切り(1個のバッチの終わり)
GO