복붙노트

[SQL] SQL은에 SQL Server 2008에서 테이블 만들기 댓글

SQL

SQL은에 SQL Server 2008에서 테이블 만들기 댓글

나는 SQL Server Management Studio를해야 할 때, 나는 테이블을 만들 때 테이블과 열을 댓글을 남기고 싶은, SQL Server 2008의 꽤 큰 테이블을 작성해야합니다. 이걸 어떻게해야합니까?

내가 실행하고 쿼리의 예 :

CREATE TABLE cert_Certifications
(
  certificationID int PRIMARY KEY IDENTITY,
  profileID int,
  cprAdultExp datetime null
)

나는 성인 CPR '와 COMMENT ='데이터 유형 후 성인 심폐 소생술 '에 대한 유효 기간에 대한 COMMENT'Expiration 날짜를 해봤 및 SQL Server 나에게 오류를주고있다.

해결법

  1. ==============================

    1.당신은 확장 속성이라고 무엇을 만들어 두 테이블과 컬럼에 대한 의견을 넣을 수 있습니다. 당신은 테이블 수준 및 열 수준 모두에서 확장 된 속성을 넣을 수 있습니다. 이 T-SQL 또는 SSMS를 통해 수행 할 수 있습니다.

    당신은 확장 속성이라고 무엇을 만들어 두 테이블과 컬럼에 대한 의견을 넣을 수 있습니다. 당신은 테이블 수준 및 열 수준 모두에서 확장 된 속성을 넣을 수 있습니다. 이 T-SQL 또는 SSMS를 통해 수행 할 수 있습니다.

    예를 들어, T-SQL에서이 같은 :

    sp_addextendedproperty 'BackColor', 'Red', 'user', '<schema name>', 'table', '<table name', 'column', '<column name>'.
    

    당신은 여기에 대한 자세한 내용을보실 수 있습니다

  2. ==============================

    2.이것은 내가 무엇을 사용

    이것은 내가 무엇을 사용

    /*==============================================================*/
    /* Table: TABLE_1                                               */
    /*==============================================================*/
    create table TABLE_1 (
       ID                   int                  identity,
       COLUMN_1             varchar(10)          null,
       COLUMN_2             varchar(10)          null,
       constraint PK_TABLE_1 primary key nonclustered (ID)
    )
    go
    
    declare @CurrentUser sysname
    select @CurrentUser = user_name()
    execute sp_addextendedproperty 'MS_Description', 
       'This is my table comment',
       'user', @CurrentUser, 'table', 'TABLE_1'
    go
    
    declare @CurrentUser sysname
    select @CurrentUser = user_name()
    execute sp_addextendedproperty 'MS_Description', 
       'This is the primary key comment',
       'user', @CurrentUser, 'table', 'TABLE_1', 'column', 'ID'
    go
    
    declare @CurrentUser sysname
    select @CurrentUser = user_name()
    execute sp_addextendedproperty 'MS_Description', 
       'This is column one comment',
       'user', @CurrentUser, 'table', 'TABLE_1', 'column', 'COLUMN_1'
    go
    
    declare @CurrentUser sysname
    select @CurrentUser = user_name()
    execute sp_addextendedproperty 'MS_Description', 
       'This is column 2 comment',
       'user', @CurrentUser, 'table', 'TABLE_1', 'column', 'COLUMN_2'
    go
    
  3. ==============================

    3.더 나은 레이아웃을 시각화 할 수 있기 때문에 테이블을 desinging 때 나는 GUI를 선호합니다. 아래 이미지와 같이 GUI 디자이너에서 하나의 테이블과 속성 창에서 컬럼에 대한 설명을 추가 할 수 있습니다

    더 나은 레이아웃을 시각화 할 수 있기 때문에 테이블을 desinging 때 나는 GUI를 선호합니다. 아래 이미지와 같이 GUI 디자이너에서 하나의 테이블과 속성 창에서 컬럼에 대한 설명을 추가 할 수 있습니다

  4. ==============================

    4.이 게시물에 좋은 답변이 있습니다. 값 'MS_Description은'다른 일이 될 수 있다고 덧붙였다. 예를 들어, 우리는 테이블에 각 열에 대해 소스에 대한 자세한 내용은 테이블과 'ColumnDescription'에 대한 데이터 'TableDescription'을 'SourceDescription'를 사용할 수 있습니다.

    이 게시물에 좋은 답변이 있습니다. 값 'MS_Description은'다른 일이 될 수 있다고 덧붙였다. 예를 들어, 우리는 테이블에 각 열에 대해 소스에 대한 자세한 내용은 테이블과 'ColumnDescription'에 대한 데이터 'TableDescription'을 'SourceDescription'를 사용할 수 있습니다.

    예:

    -- 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'
    
  5. ==============================

    5.당신은 SQL Server의 열 / 테이블에 주석을 추가 할 저장 프로 시저 호출 sp_addextendedproperty를 사용해야합니다.

    당신은 SQL Server의 열 / 테이블에 주석을 추가 할 저장 프로 시저 호출 sp_addextendedproperty를 사용해야합니다.

  6. ==============================

    6.그것이 바로 원래의 질문에 대답하지 않는 입력해도 (J 헨젤과 랜디 마인더는 이미했다!) 나는 다른 주 뭔가 싶습니다 난 그냥 그 테이블과 열을 많이 언급해야 할 사람들을 위해 매우 유용 할 수 있습니다 썼다.

    그것이 바로 원래의 질문에 대답하지 않는 입력해도 (J 헨젤과 랜디 마인더는 이미했다!) 나는 다른 주 뭔가 싶습니다 난 그냥 그 테이블과 열을 많이 언급해야 할 사람들을 위해 매우 유용 할 수 있습니다 썼다.

    다음 쿼리 :

    -- Generate comments templates for all tables
    SELECT 
    'EXEC sys.sp_addextendedproperty
        @name=N''TableDescription'',
        @level0type=N''SCHEMA'',    
        @level1type=N''TABLE'',
        @level0name=N''' + TABLE_SCHEMA + ''',
        @level1name=N''' + TABLE_NAME + ''',
        @value=N''TODO'';'
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_TYPE='BASE TABLE'
    AND TABLE_NAME NOT like 'sys%'
    order by TABLE_SCHEMA, TABLE_NAME
    
    
    -- Generate comments templates for all columns
    SELECT 'EXECUTE sp_addextendedproperty 
        @name = ''ColumnDescription'', 
        @level0type = ''SCHEMA'', 
        @level1type = N''TABLE'', 
        @level2type = N''COLUMN'', 
        @level0name=N''' + TABLE_SCHEMA + ''',
        @level1name=N''' + TABLE_NAME + ''',
        @level2name = N''' + COLUMN_NAME + ''',
        @value = ''TODO'';'
    FROM   INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA not like 'sys%' and TABLE_NAME not like 'sysdiagrams%'
      order by TABLE_SCHEMA, TABLE_NAME, case when ORDINAL_POSITION = 1 then '0' else COLUMN_NAME end
    

    를 수집하는 시스템 테이블에 쿼리하여, 테이블 및 데이터베이스에 존재하는 모든 컬럼 모두를위한 sp_addextendedproperty에 SQL 서버 출력에 호출 목록을 생성합니다.

    물론, 그것은 당신을 위해 마술을 언급하지 않지만 모두가 당신이 설명하고이를 실행하고자하는 객체에 대한 최소한 당신은 관련 코멘트와 함께 "왜 그렇게"자리를 입력해야합니다.

    그것은 당신이 수동으로 모든 호출을 작성 방지하고 많은 시간을 절약하고, 내가 다른 사람을 위해 도움이 될 것입니다 희망 그래서 당신은 테이블이나 열을 잊을 수 없다.

    사이드 발언 : 그냥 "SYS"에 알의에서 필터를 조심, 그것은 시스템 개체를 제외 여기하지만 모두라는 이름의 테이블이의의 오브젝트 이름의 따라 당신은 미세 조정의 조금을해야 할 수도 있습니다.

    내 쿼리 모든 테이블 / 열을 반환하므로 또한, 내 DB에 전혀 코멘트는 이미 코멘트 나하지 거기에있다 어떠했는지는 고려하지 않는다 없다.

  7. ==============================

    7.이 SQL 명령을 사용하여

    이 SQL 명령을 사용하여

    테이블 테이블 이름 (속성 이름 (속성 SIZE))를 생성 // 모두 만들고 테이블 키워드입니다

  8. from https://stackoverflow.com/questions/4586842/sql-comments-on-create-table-on-sql-server-2008 by cc-by-sa and MIT license