0
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
4

3 回答 3

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将为您提供安全相关视图的视图,例如sys.asymmetric_keys

我不知道有什么会给你一个Logins>sys.syslogins类型的映射。

于 2011-06-21T13:17:41.093 回答
1

我希望这个链接可能有用。您需要的所有视图都在Security Catalog Views下。此外,您可能需要查询sys.database_principals而不是过时sysuserssyslogins

于 2011-06-21T13:34:05.037 回答
0
  • 用户 =>SELECT * FROM sys.sysusers
  • 不对称键 =>SELECT * FROM sys.asymmetric_keys
  • 登录 =>SELECT * FROM sys.syslogins
  • 证书 =>SELECT * FROM sys.certificates
于 2011-06-21T13:19:28.550 回答