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

时间:2008-08-28 19:48:50

标签: sql-server-2000 sysobjects

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

我正在尝试开发一个权限脚本,该脚本将对数据库中的用户表和视图授予“select”和“references”权限。我希望在这样的集合中对每个元素执行“grant”命令可以在将新表和视图添加到数据库时更容易保持权限。

3 个答案:

答案 0 :(得分:6)

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

将排除dt_properties和系统表

添加

where table_type = 'view' 

如果您只想要视图

答案 1 :(得分:2)

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

以下是 xtype 的可能值列表:

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

以下是类型的可能值:

  • C = CHECK约束
  • D =默认或默认约束
  • F = FOREIGN KEY约束
  • FN =标量函数
  • IF =内联表函数
  • K = PRIMARY KEY或UNIQUE约束
  • L = Log
  • P =存储过程
  • R =规则
  • RF =复制过滤器存储过程
  • S =系统表
  • TF =表格函数
  • TR =触发
  • U =用户表
  • V =查看
  • X =扩展存储过程

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

有关详细信息,请访问http://msdn.microsoft.com/en-us/library/aa260447(SQL.80).aspx

答案 2 :(得分:0)

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