2011-01-03 17 views
19

Necesito crear algunas tablas bastante grandes en SQL Server 2008, mientras tengo SQL Server Management Studio, me gustaría comentar las tablas y las columnas cuando creo la tabla. ¿Cómo hago esto?Comentarios SQL sobre Crear tabla en SQL Server 2008

Ejemplo de la consulta me postulo:

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

he intentado COMMENT'Expiration Fecha para la RCP para adultos' y COMENTARIO = 'Fecha de vencimiento para la RCP para adultos' después de que el tipo de datos y SQL El servidor me está dando un error.

+0

Ver también [SQL Server administrar descripciones de las columnas por script] (https://stackoverflow.com/questions/17086651/sql-server-manage-column-descriptions-by-script) con práctico SP personalizado. – Vadzim

Respuesta

21

Puede poner comentarios en tablas y columnas creando lo que se denomina Propiedades extendidas. Puede poner propiedades extendidas tanto a nivel de tabla como a nivel de columna. Esto se puede hacer a través de T-SQL o SSMS.

Por ejemplo, en T-SQL que se ve algo como esto:

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

Puede leer mas sobre esto here

2

Es necesario utilizar el procedimiento almacenado llamado sp_addextendedproperty añadir comentarios a las columnas/tablas en el servidor Sql.

30

Esto es lo que yo uso

/*==============================================================*/ 
/* 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 

+0

Respuesta muy bien documentada. Gracias. – MikeMalter

11

prefiero la interfaz gráfica de usuario cuando desinging tablas porque puedo visualizar el diseño mejor. En el diseñador de interfaz gráfica de usuario se puede añadir una descripción para la tabla y las columnas en la ventana de propiedades como se muestra en la imagen de abajo alt text

+0

Me encanta usar GUI sobre sp_addextendedproperty (más productivo). pero ¿cómo se llega a las propiedades de la tabla? ¿Es esa una herramienta que no sea la herramienta de desarrollo ms Visual Studio? estoy usando VS 2013 pro – gg89

-3

uso de este comando sql

Create table TABLE NAME (ATTRIBUTE NAME (ATTRIBUTE SIZE)) // ambas create y table son palabras clave

5

Hay buenas respuestas en esta publicación. Agregando que el valor 'MS_Description' podría ser otra cosa. Por ejemplo, podemos usar 'SourceDescription' para obtener detalles sobre el origen de los datos, 'TableDescription' para la tabla y 'ColumnDescription' para cada columna en la tabla.

Ejemplo:

-- 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' 
+1

¡Cuanto más miro SQL Server, mejor se ve Oracle! :PAG –