cuiyi's blog(崔毅 crazycy)

          記錄點滴 鑒往事之得失 以資于發展
          數據加載中……

          SQL Server: SYSOBJECTS

          Use OBJECTPROPERTY To Generate A List Of Object Types

          How do you query the sysobjects system table and get the object type back for every single object
          You can use the type and xtype columns, these contain the following data

          xtype
          Object type. Can be one of these object types:
          C = CHECK constraint
          D = Default or DEFAULT constraint
          F = FOREIGN KEY constraint
          L = Log
          FN = Scalar function
          IF = Inlined table-function
          P = Stored procedure
          PK = PRIMARY KEY constraint (type is K)
          RF = Replication filter stored procedure
          S = System table
          TF = Table function
          TR = Trigger
          U = User table
          UQ = UNIQUE constraint (type is K)
          V = View
          X = Extended stored procedure


          type
          Object type. Can be one of these values:
          C = CHECK constraint
          D = Default or DEFAULT constraint
          F = FOREIGN KEY constraint
          FN = Scalar function
          IF = Inlined table-function
          K = PRIMARY KEY or UNIQUE constraint
          L = Log
          P = Stored procedure
          R = Rule
          RF = Replication filter stored procedure
          S = System table
          TF = Table function
          TR = Trigger
          U = User table
          V = View
          X = Extended stored procedure

          Or you can use OBJECTPROPERTY. OBJECTPROPERTY is better in my opinion because you can see right away what you are looking for
          For example OBJECTPROPERTY ( id , 'IsUserTable' ) is much easier to understand than type = 'u'

          Bu using CASE with OBJECTPROPERTY we can generate a nice report

          SELECT name,CASE
          WHEN OBJECTPROPERTY ( id , 'IsSystemTable' ) =1 THEN 'System Table'
          WHEN OBJECTPROPERTY ( id , 'IsProcedure' ) =1 THEN 'Procedure' 
          WHEN OBJECTPROPERTY ( id , 'IsPrimaryKey' ) =1 THEN 'Primary Key' 
          WHEN OBJECTPROPERTY ( id , 'IsDefault' ) =1 THEN 'Default'
          WHEN OBJECTPROPERTY ( id , 'IsForeignKey' ) =1 THEN 'Foreign Key'
          WHEN OBJECTPROPERTY ( id , 'IsCheckCnst' ) =1 THEN 'Check Constraint'
          WHEN OBJECTPROPERTY ( id , 'IsView' ) =1 THEN 'View'
          WHEN OBJECTPROPERTY ( id , 'IsConstraint' ) =1 THEN 'Constraint'
          WHEN OBJECTPROPERTY ( id , 'IsTrigger' ) =1 THEN 'Trigger'
          WHEN OBJECTPROPERTY ( id , 'IsScalarFunction' ) =1 THEN 'Scalar Function'
          WHEN OBJECTPROPERTY ( id , 'IsTableFunction' ) =1 THEN 'Table Valued Function'
          WHEN OBJECTPROPERTY ( id , 'IsRule' ) =1 THEN 'Rule'
          WHEN OBJECTPROPERTY ( id , 'IsExtendedProc' ) =1 THEN 'Extended Stored Procedure'
          WHEN OBJECTPROPERTY ( id , 'IsUserTable' ) =1 THEN 'User Table'
          END ObjectType, *
          FROM sysobjects

          And of course there are a bunch of INFORMATION_SCHEMA views that you can use to get some of the same information back

          SELECT * FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
          SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
          SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
          SELECT * FROM INFORMATION_SCHEMA.TABLES
          SELECT * FROM INFORMATION_SCHEMA.VIEWS
          SELECT * FROM INFORMATION_SCHEMA.COLUMNS


          for example, want to find a procedure and drop it.
          if exists (select * from dbo.sysobjects 
                       where id = object_id('dbo.PROC_HELLOWORLD') 
                                 and OBJECTPROPERTY(id, 'IsProcedure') = 1)
          drop procedure dbo.PROC_HELLOWORLD;

          another a bit difficult example, want to find a UDF and drop it.
          if exists (select * from dbo.sysobjects
                       where id = object_id('dbo.FUN_HELLOWORLD)
                                and type in ('FN', 'IF', 'TF', 'FS', 'FT'))
          DROP FUNCTION dbo.FUN_HELLOWORLD

          posted on 2012-12-31 13:04 crazycy 閱讀(303) 評論(0)  編輯  收藏 所屬分類: DBMS

          主站蜘蛛池模板: 灵寿县| 淳化县| 新乐市| 荣昌县| 炎陵县| 阿克苏市| 柞水县| 五原县| 横峰县| 珲春市| 兴国县| 英德市| 博白县| 沅陵县| 开封市| 当涂县| 铁力市| 太湖县| 屏东市| 黎川县| 双江| 乐陵市| 福建省| 平凉市| 沁水县| 全州县| 长兴县| 隆子县| 四子王旗| 金川县| 南和县| 阳东县| 哈密市| 兰溪市| 孝昌县| 惠来县| 宁远县| 湖北省| 长泰县| 仪征市| 阿鲁科尔沁旗|