2024年1月26日 星期五

[研究]T-SQL,用 sys.extended_properties 替「資料表(table)」的「描述」、「擴充屬性」添加用途說明

[研究]T-SQL,用 sys.extended_properties 替「資料表(table)」的「描述」、「擴充屬性」添加用途說明

2024-01-26

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19.x

********************************************************************************

T-SQL, SQL Server 2019, sys.extended_properties可以儲存欄位的描述資料,那可以用 sys.extended_properties 儲存 table  的描述嗎?

ChatGPT

是的,sys.extended_properties 可以用來儲存對象(例如表格、欄位、索引等)的描述資料,包括表格的描述。在 SQL Server 2019 中,您可以使用 sys.extended_properties 動態管理視圖(DMV)來查詢和設定對象的擴展屬性。

以下是一個範例,演示如何使用 sys.extended_properties 儲存和檢索表格的描述:

-- 創建表格
CREATE TABLE dbo.SampleTable (
    ID INT PRIMARY KEY,
    Name NVARCHAR(100)
);

-- 增加對表格的描述
EXEC sys.sp_addextendedproperty 
    @name = N'MyTableDescription',
    @value = N'This is a sample table for demonstration purposes.',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE', @level1name = N'SampleTable';

-- 查詢表格的描述
SELECT 
    obj.name AS TableName,
    ep.name AS PropertyName,
    ep.value AS PropertyValue
FROM sys.objects obj
JOIN sys.extended_properties ep ON obj.object_id = ep.major_id
WHERE 
    obj.type_desc = 'USER_TABLE'
    AND ep.name = 'MyTableDescription';


在上面的例子中,我們使用 sys.sp_addextendedproperty 存儲表格的描述。您可以將 @name 設置為您所選的描述屬性的名稱,而 @value 則是實際的描述內容。請注意,@level0type 和 @level0name 用於指定屬性的層次,以確定它屬於哪個模式(schema),而 @level1type 和 @level1name 用於指定對象的類型和名稱,以確定該描述屬於哪個表格。

您可以根據需要修改上述範例,以滿足您的特定需求。





********************************************************************************

SQL Server 在 SSMS 中並沒有類似 欄位 (field) 的 "描述" 可以自行增加每個欄位的用途說明


(下圖) 資料行 (欄位、field) 的 "描述" 可用來自己寫說明

補:「描述」欄位預設不顯示,請參考下面文章讓它顯示

[研究]SQL Server 2019讓「資料庫圖表」顯示「描述」欄位內容https://shaurong.blogspot.com/2023/10/sql-server-2019.html

[研究]SQL Server Management Studio (SMSS) 19「資料表」「設計」時顯示「描述」欄位 (註解欄位)
https://shaurong.blogspot.com/2023/03/sql-server-management-studio-smss-19.html

[研究]實體關係圖(Entity-Relationship Diagram,ER Diagram,ERD)與實體關係模型(Entity-Relationship Model,ER Model,ERM)
https://shaurong.blogspot.com/2023/03/entity-relationship-diagramer.html

(下圖) 資料表 (table) 的 "描述" 和 資料行 (欄位、field) 的 "描述" 不同,不能用來自己寫說明。


(完)

相關

sys.extended_properties (Transact-SQL) - SQL Server | Microsoft Learn
https://learn.microsoft.com/zh-tw/sql/relational-databases/system-catalog-views/extended-properties-catalog-views-sys-extended-properties?view=sql-server-ver16

sp_updateextendedproperty (Transact-SQL) - SQL Server | Microsoft Learn
https://learn.microsoft.com/zh-tw/sql/relational-databases/system-stored-procedures/sp-updateextendedproperty-transact-sql?view=sql-server-ver16

[研究]T-SQL,用 sys.extended_properties 儲存資料表(table)的「描述」、「擴充屬性」
https://shaurong.blogspot.com/2024/01/t-sql-sysextendedproperties-table.html

[研究]SQL Server 2019讓「資料庫圖表」顯示「描述」欄位內容https://shaurong.blogspot.com/2023/10/sql-server-2019.html

[研究]SQL Server Management Studio (SMSS) 19「資料表」「設計」時顯示「描述」欄位 (註解欄位)
https://shaurong.blogspot.com/2023/03/sql-server-management-studio-smss-19.html

[研究]實體關係圖(Entity-Relationship Diagram,ER Diagram,ERD)與實體關係模型(Entity-Relationship Model,ER Model,ERM)
https://shaurong.blogspot.com/2023/03/entity-relationship-diagramer.html

沒有留言:

張貼留言