動的パラメーターを使用してストアド プロシージャ内で SQL ログインを作成しようとすると、開発者は「'@username 付近の構文が正しくありません」というエラーが発生する場合があります。 「。」この不可解なメッセージは誤解を招き、混乱を招く可能性があります。
根本的な問題は、CREATE LOGIN ステートメントがパラメーターではなくリテラルのユーザー名のみを受け入れることです。この制限を回避するには、次の回避策を採用する必要があります。
この回避策を実装する方法の例を次に示します。
DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''); EXEC(@sql)
このコードは、最初に動的SQL コマンド文字列。SQL インジェクション攻撃に対する安全性を確保するために、ユーザー名とパスワードが引用符で囲まれていることを確認します。次に、EXEC ステートメントを使用して動的 SQL コマンドを実行し、SQL ログインを作成します。
このアプローチを採用することで、開発者は CREATE LOGIN がリテラルのみを受け入れるという制限を克服し、ストアド プロシージャ内に SQL ログインを動的に作成できます。
以上がストアド プロシージャ内で SQL ログインを動的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。