笔记155 取SQL 数据库中的表的字段说明和表说明
笔记155 取SQL 数据库中的表的字段说明和表说明
1 --取SQL 数据库中的表的字段说明和表说明 2 --http://social.technet.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/2a90ca5d-85b8-4597-b72b-94762c2dcac7 3 --http://msdn.microsoft.com/zh-cn/library/ms180047.aspx 4 --表及字段描述信息处理示例 5 6 --创建表 7 USE [pratice] 8 GO 9 create table 表(a1 varchar(10),a2 char(2)) 10 11 --为表添加描述信息 12 EXECUTE sp_addextendedproperty N'MS_Description', '人员信息表', N'user', N'dbo', N'table', N'表', NULL, NULL 13 14 --为字段a1添加描述信息 15 EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1' 16 17 --为字段a2添加描述信息 18 EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'表', N'column', N'a2' 19 20 --更新表中列a1的描述属性: 21 EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',a1 22 23 --显示表的描述属性 24 --如果返回的表为空,可能对象没有扩展属性或用户不具有列出对象扩展属性的权限。当返回数据库本身的扩展属性时,objtype 和 objname 列将为 NULL 25 SELECT * 26 FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表', 'column', NULL) 27 28 --删除表中列a1的描述属性: 29 EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1 30 31 --删除测试 32 drop table 表 33 34 EXEC [sys].[sp_addextendedproperty] @name = 'MS_Description', -- sysname 35 @value ='测试表' , -- sql_variant 36 @level0type = 'schema', -- varchar(128) 37 @level0name = 'dbo', -- sysname 38 @level1type = 'table', -- varchar(128) 39 @level1name = 'test' -- sysname 40 -- @level2type = '', -- varchar(128) 41 -- @level2name = NULL -- sysname 42 43 SELECT * FROM [sys].[fn_listextendedproperty]() 44 --如果 property_name 的值为 NULL 或默认值,则 fn_listextendedproperty 将返回指定对象的所有属性。 45 -- 46 --如果指定了对象类型,并且对应的对象名的值为 NULL 或默认值,则 fn_listextendedproperty 将返回指定类型的所有对象的所有扩展属性。 47 -- 48 --对象是按级别区分的,级别 0 为最高,级别 2 为最低。如果指定了较低级别的对象(级别 1 或级别 2)的类型和名称,则父对象类型和名称应当为 NULL 或默认值以外的给定值。否则,此函数返回空结果集。 49 50 --A. 显示数据库的扩展属性 51 -- 52 --以下示例显示为数据库对象本身设置的所有扩展属性。 53 USE [pratice]; 54 GO 55 SELECT objtype, objname, name, value 56 FROM fn_listextendedproperty(default, default, default, default, default, default, default); 57 GO 58 59 -- 60 --B. 显示表中所有列的扩展属性 61 -- 62 --以下示例列出 ScrapReason 表中各列的扩展属性。这包含在架构 Production 中。 63 64 USE [pratice]; 65 GO 66 SELECT objtype, objname, name, value 67 FROM fn_listextendedproperty (NULL, 'schema', 'Production', 'table', 'test', 'column', default); 68 GO 69 -- 70 --C. 显示架构中所有表的扩展属性 71 -- 72 --以下示例列出了在 Sales 架构中所包含的所有表的扩展属性。 73 74 USE [pratice]; 75 GO 76 SELECT objtype, objname, name, value 77 FROM fn_listextendedproperty (NULL, 'schema', 'Sales', 'table', default, NULL, NULL); 78 GO 79 80 81 82 83 --为了指定扩展属性,SQL Server 数据库中的对象分为三个级别:0、1 和 2。 级别 0 是最高级别,定义为在数据库作用域内包含的对象。 级别 1 的对象包含在架构作用域或用户作用域中,而级别 2 的对象包含在级别 1 对象中。 可以为这些级别中任一级别的对象定义扩展属性 84 85 --引用某个级别中的对象必须用拥有或包含它们的更高级别对象的名称进行限制。 例如,当将扩展属性添加到表列(级别 2)时,还必须指定包含该列的表名(级别 1)以及包含该表的架构(级别 0)。 86 -- 87 --如果所有对象类型和名称都为空,则属性属于当前数据库本身。 88 -- 89 --对于系统对象、用户定义数据库的作用域以外的对象或者未在 Arguments 中作为有效输入列出的对象,不允许使用扩展属性。 90 91 92 -- 93 --A.将扩展属性添加到数据库中 94 -- 95 --以下示例将值为 'AdventureWorks2012 Sample OLTP Database' 的属性名称 'Caption' 添加到 AdventureWorks2012 示例数据库中。 96 97 USE AdventureWorks2012; 98 GO 99 --Add a caption to the AdventureWorks2012 Database object itself. 100 EXEC sp_addextendedproperty 101 @name = N'Caption', 102 @value = 'AdventureWorks2012 Sample OLTP Database'; 103 104 --B.将扩展属性添加到表中的列 105 -- 106 --以下示例将标题属性添加到 Address 表中的 PostalCode 列。 107 108 USE AdventureWorks2012; 109 GO 110 EXEC sp_addextendedproperty 111 @name = N'Caption', 112 @value = 'Postal code is a required column.', 113 @level0type = N'Schema', @level0name = 'Person', 114 @level1type = N'Table', @level1name = 'Address', 115 @level2type = N'Column', @level2name = 'PostalCode'; 116 GO 117 118 119 120 121 --C.将输入掩码属性添加到列中 122 -- 123 --以下示例将输入掩码属性 '99999 or 99999-9999 or #### ###' 添加到 Address 表中的 PostalCode 列。 124 125 USE AdventureWorks2012; 126 GO 127 EXEC sp_addextendedproperty 128 @name = N'Input Mask ', @value = '99999 or 99999-9999 or #### ###', 129 @level0type = N'Schema', @level0name = 'Person', 130 @level1type = N'Table', @level1name = 'Address', 131 @level2type = N'Column',@level2name = 'PostalCode'; 132 GO 133 134 135 --D.将扩展属性添加到文件组中 136 -- 137 --下面的示例向 PRIMARY 文件组添加了一个扩展属性。 138 139 USE AdventureWorks2012; 140 GO 141 EXEC sys.sp_addextendedproperty 142 @name = N'MS_DescriptionExample', 143 @value = N'Primary filegroup for the AdventureWorks2012 sample database.', 144 @level0type = N'FILEGROUP', @level0name = 'PRIMARY'; 145 GO 146 147 148 --E.将扩展属性添加到架构中 149 -- 150 --下面的示例向 HumanResources 架构添加了一个扩展属性。 151 152 USE AdventureWorks2012; 153 GO 154 EXECUTE sys.sp_addextendedproperty 155 @name = N'MS_DescriptionExample', 156 @value = N'Contains objects related to employees and departments.', 157 @level0type = N'SCHEMA', 158 @level0name = 'HumanResources'; 159 160 161 --F.将扩展属性添加到表中 162 -- 163 --下面的示例将扩展属性添加到 Person 架构中的 Address 表。 164 165 USE AdventureWorks2012; 166 GO 167 EXEC sys.sp_addextendedproperty 168 @name = N'MS_DescriptionExample', 169 @value = N'Street address information for customers, employees, and vendors.', 170 @level0type = N'SCHEMA', @level0name = 'Person', 171 @level1typ 172 173 174 --G.将扩展属性添加到角色中 175 -- 176 --下面的示例创建了一个应用程序角色并向该角色添加了一个扩展属性。 177 178 USE AdventureWorks2012; 179 GO 180 CREATE APPLICATION ROLE Buyers 181 WITH Password = '987G^bv876sPY)Y5m23'; 182 GO 183 EXEC sys.sp_addextendedproperty 184 @name = N'MS_Description', 185 @value = N'Application Role for the Purchasing Department.', 186 @level0type = N'USER', 187 @level0name = 'Buyers'; 188 189 190 191 --H.将扩展属性添加到类型中 192 -- 193 --下面的示例向类型添加了一个扩展属性。 194 195 USE AdventureWorks2012; 196 GO 197 EXEC sys.sp_addextendedproperty 198 @name = N'MS_Description', 199 @value = N'Data type (alias) to use for any column that represents an order number. For example a sales order number or purchase order number.', 200 @level0type = N'SCHEMA', 201 @level0name = N'dbo', 202 @level1type = N'TYPE', 203 @level1name = N'OrderNumber'; 204 205 206 --I.向用户添加扩展属性 207 -- 208 --下面的示例创建了一个用户并向该用户添加了一个扩展属性。 209 210 USE AdventureWorks2012; 211 GO 212 CREATE USER CustomApp WITHOUT LOGIN ; 213 GO 214 EXEC sys.sp_addextendedproperty 215 @name = N'MS_Description', 216 @value = N'User for an application.', 217 @level0type = N'USER', 218 @level0name = N'CustomApp';