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番にすると、osqlisqlではスクリプト強制終了です
          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




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

ウィンドウを閉じる


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


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