2017-12-01 3 views
0

は私がログインとパスワードを作成し、ここではそれをシステム管理者権限を与えるために使用し、このスクリプトを使用してストアドプロシージャのパラメータを連結することは私のスクリプトコンパイラはこのエラーをスローを連結ストアドプロシージャのパラメータが

ALTER PROCEDURE [dbo].[crearte_user] 
    @login_name NVARCHAR(200), 
    @pass NVARCHAR(200) 
AS 
    EXEC ('create login'[email protected]_name+'WITH password='''[email protected]+''',check_policy=OFF,check_expiration=OFF') 
    EXEC ('sp_addsrvrolemember @loginame ='@pass, @rolename = N'sysadmin') 

です:

Msg 102, Level 15, State 1, Procedure crearte_user, Line 4
Incorrect syntax near '@pass'.

+1

2番目のexecで@passの後にカンマがありますが、これは有効な構文ではありません。しかし、あなただけのものよりも多くの問題があります(ログインを作成した後にスペースを入れないと、ログイン名とログイン名を連結し、 'create login @ login_nameWITH password'のようにWITHを意味します)。 –

+1

なぜ動的SQLが必要ですか? 'EXEC sp_addsrvrolemember @loginame = @login_name、@rolename = N'sysadmin''を実行するだけです。 –

答えて

1

それはあなただけで不足しているいくつかの引用符を持っているように、あなたも@loginnameとして@passを入れている、意図的なことであるに見えますか?私は(私は@login_nameため@passを切り替えて)あなたが探していると仮定してい

ALTER proc [dbo].[crearte_user] @login_name nvarchar(200),@pass nvarchar(200) 
as 
exec('create login ' + @login_name + ' WITH password = ''' + @pass + ''', check_policy=OFF, check_expiration=OFF') 
exec('sp_addsrvrolemember @loginame = ''' + @login_name + ''', @rolename = N''sysadmin''') 

''sysadmin''に注意してください、あなたはそれが文字列の中だ時に二回'を配置する必要があります。

関連する問題