我正在尝试创建一个SQL脚本,该脚本创建一个数据库,一个带密码的登录名,然后将该登录名添加到数据库中。
到目前为止,这就是我所拥有的。尝试执行带有错误的创建登录语句时失败
Msg 102,第15级,状态1,第1行
'login1'附近的语法不正确。
我以为它失败了,因为我需要在密码两边加上单引号,但是我不知道该怎么做。我怎样才能解决这个问题?
DECLARE @db varchar(50) = 'Database1';
DECLARE @userName varchar(50) = 'login1';
DECLARE @pwd varchar(50) = @userName;
DECLARE @createDb varchar(MAX);
DECLARE @createUser varchar(MAX);
DECLARE @useDb varchar(MAX);
DECLARE @addUserToTable varchar(MAX);
DECLARE @grantUserTablePrivileges varchar(MAX);
SET @createDb = 'CREATE DATABASE {DBNAME}';
SET @useDb = 'USE {DBNAME}';
SET @createUser = 'CREATE LOGIN {USERNAME} WITH PASSWORD = "{PWD}"';
SET @addUserToTable = 'CREATE USER {USERNAME} FOR LOGIN {USERNAME}';
SET @grantUserTablePrivileges = 'sp_addrolemember db_owner, {USERNAME}';
DECLARE @script varchar(MAX);
SET @script = REPLACE(@createDb, '{DBNAME}', @db);
PRINT(@script);
EXECUTE (@script);
SET @script = REPLACE(@createUser, '{USERNAME}', @userName);
SET @script = REPLACE(@script, '{PWD}', @pwd);
PRINT(@script);
EXECUTE (@script);
SET @script = REPLACE(@useDb, '{DBNAME}', @db);
PRINT(@script);
EXECUTE (@script);
SET @script = REPLACE(@addUserToTable, '{USERNAME}', @userName);
PRINT(@script);
EXECUTE (@script);
SET @script = REPLACE(@grantUserTablePrivileges, '{USERNAME}', @userName);
PRINT(@script);
EXECUTE (@script);
需要在密码两边加上单引号
SET @createUser = 'CREATE LOGIN {USERNAME} WITH PASSWORD = "{PWD}"';
成为
SET @createUser = 'CREATE LOGIN {USERNAME} WITH PASSWORD = ''{PWD}''';
而```
且有效。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。