SQL Server 创建用户并将其添加到所有数据库上的角色[已关闭]

ejk8hzay  于 2023-01-08  发布在  其他
关注(0)|答案(1)|浏览(124)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我正在尝试编写一个查询,我打算在一个示例中存在的所有数据库上创建一个用户并将其添加到数据库角色,条件是如果角色或用户已经存在,则将传递命令。
这是我写的查询:

DECLARE @dbname VARCHAR(50)
DECLARE @statement NVARCHAR (max)

DECLARE db_cursor CURSOR LOCAL FAST_FORWARD FOR 
    SELECT name 
    FROM MASTER.dbo.sysdatabases
    WHERE name NOT IN ('master','model','msdb')

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @dbname

WHILE @@FETCH_STATUS = 0
BEGIN 
    -- CREATE LOGIN FOR DB AND ADD INTO ROLE --
    IF NOT EXISTS (SELECT [name] FROM [sys].[database_principals]
                   WHERE [name] = 'db_view' AND [name] = 'silalahi')
    --SELECT * FROM sys.database_principals
    BEGIN
        SELECT 
            @statement = 'use ' + @dbname + ';' + 
                         'CREATE ROLE [db_view]' +
                         'CREATE USER [silalahi] FOR LOGIN [silalahi] ' +
                         'EXEC sp_addrolemember ''db_view'', ''silalahi''' + 
                         'EXEC sp_addrolemember ''db_datareader'', ''silalahi''' + 
                         'EXEC sp_addrolemember ''db_denydatawriter'', ''silalahi''' 
                
        EXEC sp_executesql @statement
    END  

    FETCH NEXT FROM db_cursor INTO @dbname  
END

CLOSE db_cursor  
DEALLOCATE db_cursor

当我运行这个查询时,我得到一个错误:
“db_cursor”附近的语法不正确
有人能帮助我如何修复这个查询吗?
谢谢

相关问题