sql >> データベース >  >> RDS >> Sqlserver

ログインとデータベース ユーザーを作成するためのストアド プロシージャを作成しようとしていますか?

    動的 SQL を使用してユーザーを作成することを検討してください。たとえば、@login というサーバー ログインを作成するには 'DEV' + @login という名前のデータベース ユーザー :

    create procedure dbo.CreateLoginAndUser(
            @login varchar(100),
            @password varchar(100),
            @db varchar(100))
    as
    declare @safe_login varchar(200)
    declare @safe_password varchar(200)
    declare @safe_db varchar(200)
    set @safe_login = replace(@login,'''', '''''')
    set @safe_password = replace(@password,'''', '''''')
    set @safe_db = replace(@db,'''', '''''')
    
    declare @sql nvarchar(max)
    set @sql = 'use ' + @safe_db + ';' +
               'create login ' + @safe_login + 
                   ' with password = ''' + @safe_password + '''; ' +
               'create user DEV' + @safe_login + ' from login ' + @safe_login + ';'
    exec (@sql)
    go
      

    クライアント側で SQL ステートメントを作成する方が簡単な場合があります。しかしそれでも、 create login でパラメータを使用できませんでした 声明。そのため、SQL インジェクションには気をつけてください。



    1. MySQL:未成年の従業員を拒否するトリガーを作成するにはどうすればよいですか?

    2. dev / prodでMysqlを使用し、テストでH2を使用します

    3. 他の行から計算されたデータを含む新しい行を挿入します

    4. OracleのREPLACE()関数