【发布时间】:2023-03-03 01:48:02
【问题描述】:
我想要完成的是删除任何额外的用户/模式(我想保留的 NOT IN 中列出的任何内容)。如果用户以相同的名称附加到任何模式(有些是这样,有些不是),我不能一概删除用户,所以我试图检查我要删除的模式是否存在,如果是这样,那么我想删除它。我想对使用相同逻辑连接到数据库的任何用户执行相同操作。
我的问题是,当我运行脚本时,它找到了我想要删除的用户/模式,但它抛出了一个错误,提示“列名 'USERNAME HERE' 无效。
有什么想法吗?
declare @sql nvarchar(max)
set @sql = ''
SELECT @sql = @sql+
'
IF EXISTS (SELECT NAME FROM sys.schemas WHERE NAME = "'+ name +'" )
BEGIN
DROP SCHEMA "'+ name +'"
END
IF EXISTS (SELECT NAME FROM dbo.sysusers WHERE NAME = "'+ name +'" )
BEGIN
DROP USER "'+ name +'"
END
'
FROM
dbo.sysusers
WHERE
name NOT IN('dbo','guest','INFORMATION_SCHEMA','sys','public')
AND LEFT(name,3) <> 'db_'
order by
name
execute ( @sql )
--print (@sql)
【问题讨论】:
标签: sql sql-server schema