新しいSQL LOGINを追加し、個人のメールアドレスの後に名前を付けることができます。たとえば、「[email protected]」と入力します。これを次のストアドプロシージャに渡すとエラーが発生します(エラーは手順に従います)。SQLエンコード文字列パラメータのために特殊文字が使用される
ストアドプロシージャ:
CREATE PROCEDURE [Forms].[AddLogin]
@Email nvarchar(2048),
@TenantPassword nvarchar(2048)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
EXEC('CREATE LOGIN ' + @Email + ' WITH PASSWORD = ''' + @TenantPassword + ''', DEFAULT_DATABASE = DunderMifflin')
END
エラー:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '.'.
私は私が行うために必要なすべてが何らかの形でパラメータをエンコードしていると確信しています。どんな助け? SQLマネージャーウィザードでユーザーを追加すると、電子メールアドレスを指定できるので、有効なログイン名であることがわかります。
警告注入警告:このルーチンにユーザーのパスワードを直接渡さないでください!ユーザーは '); DROP DATABASE DunderMifflin; - – BradC