Home  Home  Home  Kontakt  Kontakt  Kontakt  Inhalt  Inhalt  Inhalt  Blog  Blog  Blog  FAQ  FAQ  FAQ

Übersicht aller Spalten

Bookmarks

Übersicht aller Spalten; inkl. Constraints, Descriptions

-- Kann zum Reverse-Engineering verwendet werden

SELECT
        ic.TABLE_CATALOG
      , ic.TABLE_SCHEMA
      , ic.TABLE_NAME
      , ic.ORDINAL_POSITION
      , ic.COLUMN_NAME
      , UPPER(ic.DATA_TYPE)                                         AS DATA_TYPE
      , CASE 
          WHEN  ic.DATA_TYPE = 'INT' THEN NULL
          ELSE  COALESCE(ic.CHARACTER_MAXIMUM_LENGTH, ic.NUMERIC_PRECISION)
        END                                                         AS LENGHT1
      , CASE
          WHEN  ic.NUMERIC_SCALE = 0 THEN NULL
          ELSE  ic.NUMERIC_SCALE
        END                                                         AS LENGHT2
      , ic.COLUMN_DEFAULT
      , CASE
          WHEN  ic.IS_NULLABLE = 'YES' THEN NULL
          ELSE  ic.IS_NULLABLE
        END                                                         AS IS_NULLABLE
      , CASE
          WHEN idc.seed_value IS NULL THEN NULL
          ELSE CONCAT(CONVERT(VARCHAR(10),idc.seed_value) , ',', CONVERT(VARCHAR(10),idc.increment_value))
        END                             AS [IDENTITY]
      , iku.CONSTRAINT_NAME
      , itc.CONSTRAINT_TYPE
      , ep.[Value]                      AS [MS_Description]
  FROM
    information_schema.columns ic
      INNER JOIN sys.columns sc
        ON OBJECT_ID(QUOTENAME(ic.table_schema) + '.' + QUOTENAME(ic.table_name)) = sc.[object_id]
        AND ic.column_name = sc.name
      LEFT OUTER  JOIN sys.identity_columns idc
        ON sc.[object_id] = idc.[object_id]
       AND idc.name =  ic.column_name
      LEFT OUTER JOIN sys.extended_properties ep
        ON  sc.[object_id] = EP.major_id
        AND sc.[column_id] = EP.minor_id
        AND ep.name        = 'MS_Description'
        AND ep.class       = 1
      LEFT OUTER JOIN information_schema.key_column_usage iku
        ON iku.column_name    = ic.column_name
        AND iku.table_name    = ic.table_name
        AND iku.table_schema  = ic.table_schema
        AND iku.table_catalog = ic.table_catalog
      LEFT OUTER JOIN information_schema.table_constraints itc
        ON itc.table_name       = iku.table_name
        AND itc.constraint_name = iku.constraint_name
  WHERE ic.table_schema LIKE '%%'
    AND ic.table_name   LIKE '%%'
  ORDER BY
          ic.table_catalog
        , ic.table_schema
        , ic.table_name
        , ic.ordinal_position
;

Übersicht aller Routinen

SELECT
        routine_catalog
      , routine_schema
      , routine_name
      , routine_type
      , data_type
      , character_maximum_length
      , numeric_precision
      , numeric_precision_radix
      , numeric_scale
      , datetime_precision
      , routine_body
      -- , routine_definition
      , is_deterministic
      , sql_data_access
      , is_null_call
      , sql_path
      , schema_level_routine
      , max_dynamic_result_sets
      , is_user_defined_cast
      , is_implicitly_invocable
      , created
      , last_altered
  FROM information_schema.routines
  ORDER BY 
        routine_catalog
      , routine_schema
      , routine_name
      , routine_type
;

Übersicht aller Parameter der Routinen

SELECT
        specific_catalog
      , specific_schema
      , specific_name
      , ordinal_position
      , parameter_mode
      , is_result
      , as_locator
      , parameter_name
      , data_type
      , character_maximum_length
      , character_set_name
      , numeric_precision
      , numeric_precision_radix
      , numeric_scale
      , datetime_precision
  FROM information_schema.parameters
  ORDER BY
        specific_catalog
      , specific_schema
      , specific_name
      , ordinal_position
;

Suche im Code

SELECT *
  FROM information_schema.routines
  WHERE LOWER(routine_definition) LIKE LOWER('%FooBar%')
  ORDER BY 
        routine_catalog
      , routine_schema
      , routine_name
      , routine_type
;