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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...