【问题标题】:In SQL Server 2000, is there a sysobjects query that will retrieve user views and not system views?在 SQL Server 2000 中,是否有一个 sysobjects 查询将检索用户视图而不是系统视图?
【发布时间】:2010-09-07 04:31:00
【问题描述】:

假设存在这样的查询,我将不胜感激。

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

【问题讨论】:

    标签: sql-server-2000 sysobjects


    【解决方案1】:
    select * from information_schema.tables
    where table_type = 'view'
    

    【讨论】:

    • 返回不是用户视图的 sysconstraints 和 syssegments。
    【解决方案2】:
    select * from information_schema.tables
    WHERE OBJECTPROPERTY(OBJECT_ID(table_name),'IsMSShipped') =0 
    

    将排除 dt_properties 和系统表

    添加

    where table_type = 'view' 
    

    如果你只是想要视图

    【讨论】:

      【解决方案3】:
      SELECT
          *
      FROM
          sysobjects
      WHERE
          xtype = 'V' AND
          type = 'V' AND
          category = 0
      

      以下是 xtype 的可能值列表:

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

      以下是 type 的可能值:

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

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

      欲了解更多信息,请访问http://msdn.microsoft.com/en-us/library/aa260447(SQL.80).aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 2015-09-05
        相关资源
        最近更新 更多