SqlServer創建數據表描述及列描述信息

来源:http://www.cnblogs.com/ben121011/archive/2017/01/16/6289095.html
-Advertisement-
Play Games

SqlServer創建數據表描述及列描述信息 Intro Q: 為什麼要創建描述信息? A: 滑鼠懸停在對應表和列上時,會出現描述信息,可以提高工作的效率,藉助工具我們根據數據表可以生成Model,可以將描述信息。 添加描述語法 添加描述存儲過程【sp_addextendedproperty】語法 ...


SqlServer創建數據表描述及列描述信息

Intro

Q: 為什麼要創建描述信息?

A: 滑鼠懸停在對應表和列上時,會出現描述信息,可以提高工作的效率,藉助工具我們根據數據表可以生成Model,可以將描述信息。

 

 

添加描述語法

添加描述存儲過程【sp_addextendedproperty】語法

    sp_addextendedproperty  
        [ @name = ] { 'property_name' }  
        [ , [ @value = ] { 'value' }   
            [ , [ @level0type = ] { 'level0_object_type' }   
            , [ @level0name = ] { 'level0_object_name' }   
                    [ , [ @level1type = ] { 'level1_object_type' }   
                    , [ @level1name = ] { 'level1_object_name' }   
                            [ , [ @level2type = ] { 'level2_object_type' }   
                            , [ @level2name = ] { 'level2_object_name' }   
                            ]   
                    ]  
            ]   
        ]   
    [;] 

參數說明

[ @name ] = { 'property_name' }
Is the name of the property to be added. property_name is sysname and cannot be NULL. Names can also include blank or non-alphanumeric character strings, and binary values.

[ @value= ] { 'value'}
Is the value to be associated with the property. value is sql_variant, with a default of NULL. The size of value cannot be more than 7,500 bytes.

[ @level0type= ] { 'level0_object_type' }
Is the type of level 0 object. level0_object_type is varchar(128), with a default of NULL.
Valid inputs are ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE, and NULL.

[ @level0name= ] { 'level0_object_name' }
Is the name of the level 0 object type specified. level0_object_name is sysname with a default of NULL.

[ @level1type= ] { 'level1_object_type' }
Is the type of level 1 object. level1_object_type is varchar(128), with a default of NULL. Valid inputs are AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SYNONYM, TABLE, TABLE_TYPE, TYPE, VIEW, XML SCHEMA COLLECTION, and NULL.

[ @level1name= ] { 'level1_object_name' }
Is the name of the level 1 object type specified. level1_object_name is sysname, with a default of NULL.

[ @level2type= ] { 'level2_object_type' }
Is the type of level 2 object. level2_object_type is varchar(128), with a default of NULL. Valid inputs are COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER, and NULL.

[ @level2name= ] { 'level2_object_name' }
Is the name of the level 2 object type specified. level2_object_name is sysname, with a default of NULL.

[ @name = ] { 'property_name' }

要添加的屬性名稱。property_name 的數據類型為 sysname,它不能是 NULL。名稱可能還包括空白或非字母數字字元串和二進位值。

[ @value = ] { 'value' }

將要與屬性相關聯的值。value 的數據類型為 sql_variant,帶有預設設置 NULL。value 的大小不能超過 7,500 位元組;否則 SQL Server 會產生錯誤。

[ @level0type = ] { 'level0_object_type' }

用戶或用戶定義類型。level0_object_type 的數據類型為 varchar(128),其預設值為 NULL。有效的輸入是 ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE 和 NULL

[ @level0name = ] { 'level0_object_name' }

指定的 0 級對象類型的名稱。level0_object_name 的數據類型為 sysname,其預設值為 NULL。

[ @level1type = ] { 'level1_object_type' }

1 級對象的類型。level1_object_type 的數據類型為 varchar(128),其預設值為 NULL。有效的輸入是 AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SYNONYM, TABLE, TABLE_TYPE, TYPE, VIEW, XML SCHEMA COLLECTION 和 NULL。

[ @level1name = ] { 'level1_object_name' }

指定的 1 級對象類型的名稱。level1_object_name 的數據類型為 sysname,其預設值為 NULL。

[ @level2type = ] { 'level2_object_type' }

2 級對象的類型。level2_object_type 的數據類型為 varchar(128),其預設值為 NULL。有效的輸入是 COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER 和 NULL。

[ @level2name = ] { 'level2_object_name' }

指定的 2 級對象類型的名稱。level2_object_name 的數據類型為 sysname,其預設值為 NULL。

返回值為0則成功,1則失敗

更新描述

sp_updateextendedproperty  
    [ @name = ]{ 'property_name' }   
    [ , [ @value = ]{ 'value' }  
        [, [ @level0type = ]{ 'level0_object_type' }  
         , [ @level0name = ]{ 'level0_object_name' }  
              [, [ @level1type = ]{ 'level1_object_type' }  
               , [ @level1name = ]{ 'level1_object_name' }  
                     [, [ @level2type = ]{ 'level2_object_type' }  
                      , [ @level2name = ]{ 'level2_object_name' }  
                     ]  
              ]  
        ]  
    ]  

更新描述 和 添加的語法差不多,在此就不再贅述

USER 還是 SCHEMA

msdn 給出的文檔里這麼說:

The ability to specify USER as a level 0 type in an extended property of a level 1 type object will be removed in a future version of SQL Server. Use SCHEMA as the level 0 type instead. For example, when defining an extended property on a table, specify the schema of the table instead of a user name. The ability to specify TYPE as level-0 type will be removed in a future version of SQL Server. For TYPE, use SCHEMA as the level 0 type and TYPE as the level 1 type.

在級別1類型對象的擴展屬性中將USER指定為級別0類型的功能將在未來版本的SQL Server中刪除。 使用SCHEMA作為0級類型。 例如,在表上定義擴展屬性時,請指定表的模式,而不是用戶名。 將在未來版本的SQL Server中刪除將TYPE指定為級別0類型的能力。 對於TYPE,使用SCHEMA作為0級類型,使用TYPE作為1級類型。

We do not recommend specifying USER as a level 0 type when you apply an extended property to a database object, because this can cause name resolution ambiguity. For example, assume user Mary owns two schemas (Mary and MySchema) and these schemas both contain a table named MyTable. If Mary adds an extended property to table MyTable and specifies @level0type = N'USER', @level0name = Mary, it is not clear to which table the extended property is applied. To maintain backward compatibility, SQL Server will apply the property to the table that is contained in the schema named Mary.

當將擴展屬性應用於資料庫對象時,我們不建議將USER指定為級別0類型,因為這可能會導致名稱解析模糊。 例如,假設用戶Mary擁有兩個模式(Mary和MySchema),這些模式都包含一個名為MyTable的表。 如果Mary向表MyTable添加擴展屬性並指定@ level0type = N'USER',@ level0name = Mary,則不清楚擴展屬性應用於哪個表。 為了保持向後相容性,SQL Server會將該屬性應用於包含在名為Mary的模式中的表。

總結來說,當將擴展屬性應用於資料庫對象時,微軟推薦使用 SCHEMA,不推薦 USER,但是 USER 還是會保留,還是可以使用但是在某些情況下(如上所述)可能會出現自己意料之外的事情。

示例

 1 -- 查詢
 2 SELECT  [TypeId] ,  [TypeName]
 3 FROM    [dbo].[tabBlockType];
 4 
 5 -- USER (不推薦)
 6 -- 添加表 tabBlockType 描述
 7 EXECUTE sp_addextendedproperty N'MS_Description', N'黑名單類型表', N'USER', N'dbo',
 8     N'table', N'tabBlockType';
 9 
10 -- 添加列 TypeId 描述
11 EXECUTE sp_addextendedproperty N'MS_Description', N'黑名單類型id', N'USER', N'dbo',
12     N'TABLE', N'tabBlockType', N'COLUMN', N'TypeId';
13 -- 添加 列 TypeName 描述
14 EXECUTE sp_addextendedproperty N'MS_Description', N'黑名單類型名稱', N'USER', N'dbo',
15     N'TABLE', N'tabBlockType', N'COLUMN', N'TypeName';
16 
17 -- 更新列 TypeName 描述
18 EXECUTE sp_updateextendedproperty N'MS_Description', N'黑名單類型', N'USER', N'dbo',
19     N'TABLE', N'tabBlockType', N'COLUMN', N'TypeName';
20 
21 -- SCHEMA (推薦)
22 -- 添加表 tabBlockType 描述
23 EXECUTE sp_addextendedproperty N'MS_Description', N'黑名單類型表', N'SCHEMA', N'dbo',
24     N'table', N'tabBlockType';
25 
26 -- 添加列 TypeId 描述
27 EXECUTE sp_addextendedproperty N'MS_Description', N'黑名單類型id', N'SCHEMA', N'dbo',
28     N'TABLE', N'tabBlockType', N'COLUMN', N'TypeId';
29 -- 添加 列 TypeName 描述
30 EXECUTE sp_addextendedproperty N'MS_Description', N'黑名單類型名稱', N'SCHEMA', N'dbo',
31     N'TABLE', N'tabBlockType', N'COLUMN', N'TypeName';
32 
33 -- 更新列 TypeName 描述
34 EXECUTE sp_updateextendedproperty N'MS_Description', N'黑名單類型', N'SCHEMA', N'dbo',
35     N'TABLE', N'tabBlockType', N'COLUMN', N'TypeName';
36 
37 -- 創建 Create sql 腳本 生成的添加描述 腳本
38 
39 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'黑名單類型id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tabBlockType', @level2type=N'COLUMN',@level2name=N'TypeId'
40 GO
41 
42 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'黑名單類型' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tabBlockType', @level2type=N'COLUMN',@level2name=N'TypeName'
43 GO
44 
45 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'黑名單類型表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tabBlockType'
46 GO

 

sql 總覽

 

創建create 語句時 描述信息也會導出

 

More

參考資料

In the end

筆者水平有限,如果發現有什麼錯誤的地方,歡迎指出,歡迎與我聯繫 [email protected]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 光,電磁波和顏色光是一種電磁波,頻率被限定在較窄的範圍內。不同頻率(對應不同的波長)的電磁波(光)有不同的顏色。可見光的最長波長是780nm,對應紅色;最短波長是380nm,對應於紫色。太陽光可以發射可見範圍內所有頻率的波長,表現為白光。當白光遇到物體時,一些頻率的電磁波被反射,一些頻率的電磁波被吸... ...
  • 刪除的效果 AutomaticBottomFadeleftmiddlenonerighttop 簡單刪除先刪除數據源里的數據,然後再刪除cell,否者會報錯 let indexPath = NSIndexPath.init(forRow: 1, inSection: 0) let indexPath... ...
  • UIImage是什麼用來管理APP里的圖片資源,可以用來表示設備支持的圖片資源,不僅僅是jpg和png。UIImage是immutable的,因此也是線程安全的。iOS支持的所有的圖片格式鏈接不過,對於gif格式,只能展示第一幀。需要把gif分成若幹幀,分別展示。iOS本身的圖片緩存系統iOS本身有... ...
  • 動態視圖 基表 GV$ACCESS x$ksuses,x$kglob,x$kgldp,x$kgllk GV$ACTIVE_INSTANCES x$ksimsi GV$ACTIVE_SESS_POOL_MTH x$kgskasp GV$AQ1 X$KWQSI GV$ACCESS x$ksuses,x$ ...
  • Resource Governor的出現,解決了在一臺SQL Server實例上,管理多用戶工作負載和資源隔離的需求,它允許管理員限制系統處理Requsts時所耗費的CPU 和 Memory資源的數量,在一定程度上,限制和隔離了runaway查詢。對於SQL Server 2012,用戶能夠基於工作 ...
  • 後臺資料庫操作某個表時處於假死狀態,可能該表被某個用戶鎖定,導致其他用戶無法繼續操作, 如下是解決方案和實例。 查被鎖的表,以及用戶 解鎖,釋放SESSION SQL 實例如下: 執行查詢鎖表的sql,得到結果 現在想要sys_dbcfileinfo表被鎖定,如果處於其他用戶一直忘記提交狀態,現在繼 ...
  • Deeplearning 學習記錄,從人工神經網路到捲積神經網路_3_使用tensorflow搭建CNN來分類not_MNIST數據 ...
  • 前言 好長時間沒摸資料庫了,周末在家寫了個報表的存儲過程,一時間對使用存儲過程實現分頁的同時並計算出記錄總數不知道怎麼更好的去實現。按照我們正常的業務邏輯,存儲過程數據首先是分頁,其次接受若幹查詢條件,返回分頁結果集的同時還需要返回記錄總數給客戶端。 我對於這樣一個業務存儲過程總結如下:1、內核層, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...