2011-01-03 21 views
19

Ich muss einige ziemlich große Tabellen in SQL Server 2008 erstellen, während ich SQL Server Management Studio habe, möchte ich die Tabellen und die Spalten kommentieren, wenn ich die Tabelle erstellen. Wie mache ich das?SQL-Kommentare zu Create Table auf SQL Server 2008

Beispiel der Abfrage bei mir läuft:

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

Ich habe versucht, COMMENT'Expiration Datum für die Erwachsenen CPR‘und COMMENT =‚Ablaufdatum für die Erwachsenen CPR‘nach dem Datentyp und SQL Der Server gibt mir einen Fehler.

+0

Siehe auch [SQL Server Spaltenbeschreibungen von Skript verwalten] (https://stackoverflow.com/questions/17086651/sql-server-manage-column-descriptions-by-script) mit handlichen benutzerdefinierten SP. – Vadzim

Antwort

21

Sie können Kommentare zu Tabellen und Spalten hinzufügen, indem Sie erweiterte Eigenschaften erstellen. Sie können erweiterte Eigenschaften sowohl auf Tabellen- als auch auf Spaltenebene hinzufügen. Dies kann über T-SQL oder SSMS erfolgen.

Zum Beispiel in T-SQL sieht es etwa so aus:

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

Sie können mehr lesen über sie here

2

Sie müssen die gespeicherte Prozedur sp_addextendedproperty Kommentare zu Spalten hinzufügen genannt verwenden/Tabellen in Sql Server.

30

Dies ist, was ich

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

Wirklich schön dokumentierte Antwort. Vielen Dank. – MikeMalter

11

bevorzuge ich die GUI, wenn Tabellen desinging, weil ich das Layout besser visualisieren. In der GUI-Designer kann man eine Beschreibung für die Tabelle und Spalten im Eigenschaftenfenster hinzufügen, wie unten alt text

+0

Ich liebe die Verwendung von GUI über sp_addextendedproperty (produktiver). aber wie kommst du an den Tisch Eigenschaften? Ist das ein anderes Tool als das MS-Entwicklungstool Visual Studio? Ich benutze VS 2013 pro – gg89

-3

Verwendung dieser SQL-Befehl

Create table TABLE NAME (ATTRIBUTE NAME (ATTRIBUTE SIZE)) // beide create und table sind Schlüsselwörter

5
im Bild gezeigt

Es gibt gute Antworten in diesem Post. Hinzufügen, dass der Wert 'MS_Description' könnte etwas anderes sein. Zum Beispiel können wir 'SourceDescription' für Details über die Quelle der Daten, 'TableDescription' für die Tabelle und 'ColumnDescription' für jede Spalte in der Tabelle verwenden.

Beispiel:

-- 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

Je mehr ich auf SQL Server schaue, desto besser sieht Oracle aus! : P –