동적 매개변수를 사용하여 저장 프로시저 내에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!