ストアド プロシージャ内のパラメータを使用した SQL ログインの作成
SaaS データベース内でのテナント作成を自動化するために、開発者はCREATE LOGIN ステートメントでユーザー名とパスワードのパラメータ化された入力を使用するストアド プロシージャ。ただし、間違った構文に関連する不可解なエラー メッセージが表示されました。
問題の根本原因は、パラメータではなくリテラル値を必要とする CREATE LOGIN 構文にあります。これを解決するには、次の回避策があります。
これらの変更を組み込んだストアド プロシージャの改訂版は次のとおりです。
CREATE PROCEDURE [MyScheme].[Tenants_InsertTenant] @username nvarchar(2048), @password nvarchar(2048) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + QUOTENAME(@username) + ' WITH PASSWORD = ' + QUOTENAME(@password, ''''); EXEC(@sql) END
この回避策を実装することで、ストアド プロシージャは提供されたデータベースに基づいて SQL ログインを動的に作成できるようになりました。パラメーターを使用して、テナント作成プロセスを完全に自動化できます。
以上がストアド プロシージャのパラメータを使用して SQL ログインを安全に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。