Création d'une connexion SQL avec des paramètres dans des procédures stockées
Dans le but d'automatiser la création de locataires dans une base de données SaaS, un développeur a tenté d'utiliser un procédure stockée avec des entrées paramétrées pour le nom d'utilisateur et le mot de passe dans l'instruction CREATE LOGIN. Cependant, ils ont rencontré des messages d'erreur énigmatiques liés à une syntaxe incorrecte.
La cause première du problème réside dans la syntaxe CREATE LOGIN, qui nécessite des valeurs littérales plutôt que des paramètres. Pour résoudre ce problème, il existe une solution de contournement :
Voici une version révisée de la procédure stockée qui intègre ces modifications :
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
En implémentant cette solution de contournement, la procédure stockée peut désormais créer dynamiquement des connexions SQL basées sur les paramètres fournis, permettant au processus de création de locataire de devenir entièrement automatisé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!