SQLServer元数据操作
元数据简介 元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单一点就是"关于数据的信息",日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义。比如在管理、维护 SQL Server 或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息: 某个数据库中的表和视图的个数以及名称 ; 某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等; 某个表上定义的约束; 某个表上定义的索引以及主键/外键的信息。 下面我们将介绍几种获取元数据的方法。 获取元数据 使用系统存储过程与系统函数访问元数据 获取元数据最常用的方法是使用 SQL Server 提供的系统存储过程与系统函数。 系统存储过程与系统函数在系统表和元数据之间提供了一个抽象层,使得我们不用直接查询系统表就能获得当前数据库对象的元数据。 常用的与元数据有关的系统存储过程有以下一些: 常用的与元数据有关的系统函数有以下一些: 系统函数 描述 由于我们无法直接利用到存储过程与函数的返回结果,因此只有在我们关心的只是查询的结果,而不需要进一步利用这些结果的时候,我们会使用系统存储过程与系统函数来查询元数据。 例如,如果要获得当前服务器上所有数据库的基本信息,我们可以在查询分析器里面运行: EXEC sp_databases 在返回结果中我们可以看到数据库的名称、大小及备注等信息。 但是如果要引用这部分信息,或者存储这部分信息以供后面使用,那么我们必须借助中间表来完成这个操作: CREATE TABLE #sp_result 信息架构视图基于 SQL-92 标准中针对架构视图的定义,这些视图独立于系统表,提供了关于 SQL Server 元数据的内部视图。信息架构视图的最大优点是,即使我们对系统表进行了重要的修改,应用程序也可以正常地使用这些视图进行访问。因此对于应用程序来说,只要是符合 SQL-92 标准的数据库系统,使用信息架构视图总是可以正常工作的。 常用的信息架构视图有以下一些: 由于这些信息架构都是以视图的方式存在的,因此我们可以很方便地获得并利用需要的信息。 例如,我们要得到某个表有多少列,可以使用以下语句: SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 使用系统表访问元数据 虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL Server 将所有数据库对象的信息均存放在系统表中,作为 SQL Server 的管理、开发人员,了解各个系统表的作用将有助于我们了解 SQL Server 的内在工作原理。 SQL Server 的系统表非常多,其中最常用的与元数据查询有关的表有如下一些: 将系统存储过程、系统函数、信息架构视图与系统表结合使用,可以方便地让我们获得所有需要的元数据信息。 示例: SELECT OBJECT_NAME (id) 其中主要用到了系统表 sysobjects以及其属性 xtype,还有就是用到了 OBJECTPROPERTY 系统函数来判断是不是安装 SQL Server 的过程中创建的对象。 2、 获得指定表上所有的索引名称 SELECT name FROM sysindexes 下面给出了一个存储过程,它的作用是自动将当前数据库的用户存储过程加密。 DECLARE @sp_name nvarchar(400) OPEN sp_cursor FETCH NEXT FROM sp_cursor WHILE @@FETCH_STATUS = 0 CLOSE sp_cursor 该存储过程利用了 sysobjects 和 syscomments 表,并巧妙地修改了原存储过程的 SQL 定义语句,将 AS 修改为了 WITH ENCRYPTION AS,从而达到了加密存储过程的目的。本存储过程在 SQL Server 2000 上通过。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sqlserver函数大全
- SQLserver运维必备:权限管理、备份、复制
- 在sqlserver2005中安装sql server 2000的示例数据库northwi
- 如何检查表是否存在以及它是否不存在在sql server 2008中创
- ACCESS 是什么 谈谈她 怀念下
- sql-server – 如何在T / SQL Server中为超/亚型(Inheriten
- 用户 'IIS APPPOOL\DefaultAppPool' 登录失败
- filesystems – 有没有办法修复损坏的LDM数据库?
- 使用row_number()实现分页实例
- sql-server – Sql Server 2014 – 更新到Windows 10,无法连