簡體   English   中英

如何獲取 SQL Server 中表的列描述/注釋

[英]How can I get column descriptions/comments for a table in SQL Server

在我的 Laravel 應用程序中,我想獲取給定 SQL Server 表的所有列的注釋。

這是我迄今為止嘗試過的:

$query    = "SELECT sys.objects.name AS TableName, sys.columns.name AS ColumnName,
                   ep.name AS PropertyName, ep.value AS Description
            FROM sys.objects
            INNER JOIN sys.columns ON sys.objects.object_id = sys.columns.object_id
            CROSS APPLY fn_listextendedproperty(default,
                              'SCHEMA', schema_name(schema_id),
                              'TABLE', sys.objects.name, 'COLUMN', sys.columns.name) ep
            ORDER BY sys.objects.name, sys.columns.column_id";

$columnDetails =  DB::connection($user->getConnectionName())->select(DB::raw($query)

這是我的表在 DBeaver 中的樣子:

在此處輸入圖片說明

但是,我從我的代碼中得到了這個結果,它給出了null的“描述”:

在此處輸入圖片說明

我是否在查詢或表設置中做錯了什么導致它為空?


附加信息

我通過 DBeaver UI 添加了原始評論,認為這可能不會像我認為的那樣做,我返回並通過 SQL 添加了另一列和評論:

EXEC laravel.sys.sp_addextendedproperty 'MS_Description', 'Some test description', 'schema', 'guest', 'table', 'users', 'column', 'test' GO

不幸的是,這會導致同樣的問題:

在此處輸入圖片說明

嘗試像這樣更改查詢:

$query    = "select so.name as TableName, sc.name as ColumnName,
                ep.name as PropertyName, ep.value as Description
            from sys.objects so
            join sys.columns sc on so.object_id = sc.object_id
            join sys.extended_properties ep
                on sc.object_id = ep.major_id and sc.column_id = ep.minor_id
            order by so.name, sc.column_id";

$columnDetails =  DB::connection($user->getConnectionName())->select(DB::raw($query)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM