動的 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 インジェクションには気をつけてください。