什么是“神”系统表?

时间:2011-06-21 13:09:00

标签: tsql sql-server-2005 sql-drop

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

3 个答案:

答案 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而不是过时的sysuserssyslogins

答案 2 :(得分:0)

  • USER => SELECT * FROM sys.sysusers
  • ASYMMETRIC KEY => SELECT * FROM sys.asymmetric_keys
  • LOGIN => SELECT * FROM sys.syslogins
  • CERTIFICATE => SELECT * FROM sys.certificates