在SQL Server 2000中,是否有一个sysobjects查询将检索用户视图而不是系统视图?

时间:2020-03-05 18:44:38  来源:igfitidea点击:

假设存在这样的查询,我将非常感谢帮助。

我正在尝试开发一个权限脚本,该脚本将授予数据库中用户表和视图的"选择"和"引用"权限。我希望在这样的集合中的每个元素上执行" grant"命令,可以在将新表和视图添加到数据库时更轻松地将权限保持在最新状态。

解决方案

回答

select * from information_schema.tables
where table_type = 'view'

回答

select * from information_schema.tables
WHERE OBJECTPROPERTY(OBJECT_ID(table_name),'IsMSShipped') =0

将排除dt_properties和系统表

添加

where table_type = 'view'

如果你只想要视图

回答

SELECT
    *
FROM
    sysobjects
WHERE
    xtype = 'V' AND
    type = 'V' AND
    category = 0

这是xtype可能值的列表:

  • C = CHECK约束
  • D =默认或者默认约束
  • F =外键约束
  • L =对数
  • P =存储过程
  • PK = PRIMARY KEY约束(类型为K)
  • RF =复制过滤器存储过程
  • S =系统表
  • TR =触发
  • U =用户表
  • UQ = UNIQUE约束(类型为K)
  • V =视图
  • X =扩展存储过程

以下是类型的可能值:

  • C = CHECK约束
  • D =默认或者默认约束
  • F =外键约束
  • FN =标量函数
  • IF =内联表功能
  • K =主键或者唯一约束
  • L =对数
  • P =存储过程
  • R =规则
  • RF =复制过滤器存储过程
  • S =系统表
  • TF =表格功能
  • TR =触发
  • U =用户表
  • V =视图
  • X =扩展存储过程

最后,类别字段看起来像是根据不同类型的对象进行分组的。在分析了返回结果集之后,系统视图看起来具有类别= 2,而所有用户视图都具有类别=0。希望这会有所帮助。

有关更多信息,请访问http://msdn.microsoft.com/zh-cn/library/aa260447(SQL.80).aspx