SQL Comments on Create Table on SQL Server 2008

后端 未结 7 1599
广开言路
广开言路 2020-11-29 07:37

I need to create some pretty big tables in SQL Server 2008, while I do have SQL Server Management Studio, I would like to comment the tables and the columns when I create th

7条回答
  •  一向
    一向 (楼主)
    2020-11-29 07:53

    There are good answers in this post. Adding that the value 'MS_Description' could be other thing. For example, we can use 'SourceDescription' for details about the source the data, 'TableDescription' for table and 'ColumnDescription' for each column on table.

    Example:

    -- Create example table
    create table testTablename(
        id int,
        name varchar(20),
        registerNumber bigint
    )
    
    -- SourceDescription
    EXEC sys.sp_addextendedproperty 
        @name=N'SourceDescription', 
        @value=N'Result of process x union y ' , -- Comment about the source this data. 
        @level0type=N'SCHEMA',
        @level0name=N'dbo', 
        @level1type=N'TABLE',
        @level1name=N'testTableName' -- Name of Table
    
    -- TableDescription
    EXEC sys.sp_addextendedproperty 
        @name=N'TableDescription', 
        @value=N'Table is used for send email to clients.' , -- Coment about the used of table
        @level0type=N'SCHEMA',
        @level0name=N'dbo', 
        @level1type=N'TABLE',
        @level1name=N'testTableName'
    
    -- ColumnDescription
    EXECUTE sp_addextendedproperty 
        @name = 'ColumnDescription', 
        @value = 'Unique identification of employer. Its the registry of company too.', 
        @level0type = 'SCHEMA', 
        @level0name= N'dbo', 
        @level1type = N'TABLE', 
        @level1name = N'testTableName', 
        @level2type = N'COLUMN', 
        @level2name = N'registerNumber'
    
    -- If necessary, you can delete the comment.
    exec sp_dropextendedproperty
        @name = 'ColumnDescription', 
        @level0type = 'SCHEMA', 
        @level0name= N'dbo', 
        @level1type = N'TABLE', 
        @level1name = N'testTableName', 
        @level2type = N'COLUMN', 
        @level2name = N'registerNumber'
    
    
    -- Show you the table resume
    select 
        tables.name tableName,
        tables.create_date,
        tables.modify_date,
        tableDesc.value TableDescription,
        sourceDesc.value SourceDescription
    from 
        sys.tables  
        left join sys.extended_properties tableDesc on tables.object_id = tableDesc.major_id and tableDesc.name = 'TableDescription'
        left join sys.extended_properties sourceDesc on tables.object_id = sourceDesc.major_id and sourceDesc.name = 'SourceDescription'
    where 
        tableDesc.name in('TableDescription', 'SourceDescription', 'ColumnDescription')
    order by tables.name
    
    
    -- show you the columns resume
    select 
        tables.name tableName,
        columns.name columnName,
        extended_properties.value
    from 
        sys.tables 
        inner join sys.columns on tables.object_id = columns.object_id
        left join sys.extended_properties on 
            tables.object_id = extended_properties.major_id 
            and columns.column_id = extended_properties.minor_id
            and extended_properties.name in('MS_Description','ColumnDescription')
    where
        tables.name = 'testTableName'
    

提交回复
热议问题