使用存储过程中的参数创建 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中文网其他相关文章!