MSDE FunClub | 最終更新日 : 2000/05/30 | |
Microsoft Data Engine FunClub |
|
|
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