Я пытаюсь создать пользовательский скрипт, который вытаскивает имена пользователей из таблицы и помещает их в переменную, но я сталкиваюсь с кучей ошибок. Вот что я получил.Динамический SQL Создайте заявление пользователя
USE AP
GO
IF EXISTS (SELECT DB_ID('AP'))
DROP TABLE NewLogins
CREATE TABLE NewLogins
(LoginName VARCHAR(128))
INSERT INTO NewLogins
VALUES ('BBrown'), ('CChaplin'), ('DDyer'), ('EEbbers')
DECLARE NewLogins CURSOR
STATIC
FOR (SELECT LoginName, SUBSTRING(LoginName, 1, 4) FROM NewLogins)
DECLARE @LoginName VARCHAR(128), @Password VARCHAR(128)
OPEN NewLogins
FETCH NEXT FROM NewLogins
INTO @LoginName, @Password
DECLARE @DropLogin VARCHAR(200)
SET @DropLogin ='DROP LOGIN ' + @LoginName + ''
WHILE(@@FETCH_STATUS = 0)
BEGIN
IF EXISTS (SELECT DB_ID('AP'))
EXEC @DropLogin
FETCH NEXT FROM NewLogins
Declare @sqlstmt VARCHAR(200)
SET @sqlstmt='CREATE LOGIN '[email protected] +' WITH PASSWORD ='''+ LOWER(@Password) +'9999'''
PRINT @sqlstmt
EXEC (@sqlstmt)
DECLARE @CreateUser VARCHAR(200)
SET @CreateUser ='CREATE USER '[email protected] +'FOR LOGIN ' + @LoginName
DECLARE @AddMemberToGroup VARCHAR(200)
SET @AddMemberToGroup ='EXEC sp_addrolemember ' + @LoginName +', ' + 'PaymentEntry'
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = @LoginName)
BEGIN
EXEC @CreateUser
EXEC @AddMemberToGroup
END
END
CLOSE NewLogins
DEALLOCATE NewLogins
По какой-то причине, я получаю ошибки, где он говорит:
CREATE LOGIN BBrown WITH PASSWORD ='bbro9999'
Msg 15025, Level 16, State 1, Line 3
The server principal 'BBrown' already exists.
Msg 2812, Level 16, State 62, Line 45
Could not find stored procedure 'CREATE USER BBrownFOR LOGIN BBrown'.
Msg 2812, Level 16, State 62, Line 46
Could not find stored procedure 'EXEC sp_addrolemember BBrown, PaymentEntry'.
Msg 2812, Level 16, State 62, Line 28
Could not find stored procedure 'DROP LOGIN BBrown'.