IF EXISTS (SELECT * FROM sys.all_objects WHERE name = N'SOMELOGIN')
DROP USER [SOMELOGIN]
GO
不起作用,因为USER SOMELOGIN
不在sys.all_objects
。
是否有一个全球“神”表我可以查看是否存在某些东西。 (即,当它不存在时丢弃它不会引发错误)
或者,是否有在线资源可以找出某些类型的对象所在的位置?
我需要删除以下内容
USER
ASYMMETRIC KEY
LOGIN
CERTIFICATE
答案 0 :(得分:1)
sys.objects
用于数据库中的对象,例如表,存储过程,视图等。
我认为您需要以下表格:
SELECT * FROM sys.sysusers
WHERE [name] = 'someUser'
SELECT * FROM sys.asymmetric_keys
WHERE [name] = 'someKey'
SELECT * FROM sys.certificates
WHERE [name] = 'someCertificate'
SELECT * FROM sys.syslogins
WHERE [name] = 'someLogin'
修改强>
我可以找到最接近详细说明系统视图的内容是this。它按视图类型将它们分开。例如,向下钻取到Catalog Views
> Security Catalog Views
会为您提供security related views的观看次数,例如sys.asymmetric_keys
我不知道有什么可以给你Logins
> sys.syslogins
类型的映射。
答案 1 :(得分:1)
我希望this链接可能有用。您需要的所有视图都在Security Catalog Views下。此外,您可能需要查询sys.database_principals
而不是过时的sysusers
和syslogins
答案 2 :(得分:0)
SELECT * FROM sys.sysusers
SELECT * FROM sys.asymmetric_keys
SELECT * FROM sys.syslogins
SELECT * FROM sys.certificates