大家好,今天小编来为大家解答元数据服务器这个问题,服务器中的高速缓存盘很多人还不知道,现在让我们一起来看看吧!
一、什么是元数据
元数据的英文名称是“Metadata",它是“关于数据的数据”在地理空间信息中用于描述地理数据集的内容、质量、表示方式、空间参考、管理方式以及数据集的其他特征,它是实现地理空间信息共享的核心标准之一。目前,国际上对空间元数据标准内容进行研究的组织主要有三个,分别是欧洲标准化委员会(CEN/TC287)、美国联邦地理数据委员会(FGDC)和国际标准化组织地理信息/地球信息技术委员会(ISO/TC211)。空间元数据标准内容分两个层次。第一层是目录信息,主要用于对数据集信息进行宏观描述,它适合在数字地球的国家级空间信息*中心或区域以及全球范围内管理和查询空间信息时使用。第二层是详细信息,用来详细或全面描述地理空间信息的空间元数据标准内容,是数据集生产者在提供空间数据集时必须要提供的信息。
元数据主要有下列几个方面的作用:
(1)用来组织和管理空间信息,并挖掘空间信息资源,这正是数字地球的特点和优点所在。通过它可以在广域网或因特网上准确地识别、定位和访问空间信息。
(2)帮助数据使用者查询所需空间信息。比如,它可以按照不同的地理区间、指定的语言以及具体的时间段来查找空间信息资源。
(3)组织和维护一个机构对数据的投资。
(4)用来建立空间信息的数据目录和数据*中心。通过数据目录和数据*中心等提供的空间元数据内容,用户可以共享空间信息、维护数据结果,以及对它们进行优化等。
(5)提供数据转换方面的信息。使用户在获取空间信息的同时便可以得到空间元数据信息。通过空间元数据,人们可以接受并理解空间信息,与自己的空间信息集成在一起,进行不同方面的科学分析和决策。描述空间信息的元数据标准体系内容按照部分、复合元素和数据元素来组织,它们是依次包含关系,前者包含后者,即:后者依次组成前者。具体分为8个基本内容部分和4个引用部分,由12个部分组成,其中标准化内容包括标识信息、数据质量信息、数据集继承信息、空间数据表示信息、空间参照系信息、实体和属*信息、发行信息以及空间元数据参考信息等内容,另外还有4个部分是标准化部分中必须引用的信息,它们为引用信息、时间范围信息、联系信息及信息。元数据标准内容体系是通过元数据网络管理系统来实现的,该系统主要由权限验证功能(服务器端验证)、输入和合法*校验功能(客户端校验)、查询功能(服务器端查询)与返回和显示功能(服务器端格式化查询结果并返回,客户端显示)等组成。利用空间元数据网络管理系统作为空间*站的共享软件可基本上实现空间信息的网络共享。
二、获取SQLServer数据库元数据的几种方法
元数据简介
元数据(metadata)最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据的信息”,日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。在关系型数据库管理系统(DBMS)中,元数据描述了数据的结构和意义。比如在管理、维护 SQL Server或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息:
◆某个数据库中的表和视图的个数以及名称;
◆某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等;
◆某个表上定义的约束;
◆某个表上定义的索引以及主键/外键的信息。
下面我们将介绍几种获取元数据的方法。
获取元数据
使用系统存储过程与系统函数访问元数据
获取元数据最常用的方法是使用 SQL Server提供的系统存储过程与系统函数。
系统存储过程与系统函数在系统表和元数据之间提供了一个抽象层,使得我们不用查询系统表就能获得当前数据库对象的元数据。
常用的与元数据有关的系统存储过程有以下一些:
系统存储过程
◆sp_columns返回指定表或视图的列的详细信息。
◆sp_databases返回当前服务器上的所有数据库的基本信息。
◆sp_fkeys若参数为带有主键的表,则返回包含指向该表的外键的所有表;若参数为带有外键的表名,则返回所有同过主键/外键关系与该外键相关联的所有表。
◆sp_pkeys返回指定表的主键信息。
◆sp_server_info返回当前服务器的各种特*及其对应取值。
◆sp_sproc_columns返回指定存储过程的的输入、输出参数的信息。
◆sp_statistics返回指定的表或索引视图上的所有索引以及统计的信息。
◆sp_stored_procedures返回当前数据库的存储过程列表,包含系统存储过程。
◆sp_tables返回当前数据库的所有表和视图,包含系统表。
常用的与元数据有关的系统函数有以下一些:
系统函数
◆COLUMNPROPERTY返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。
◆COL_LENGTH返回指定数据库的指定属*值,如是否处于只读模式等。
◆DATABASEPROPERTYEX返回指定数据库的指定选项或属*的当前设置,如数据库的状态、恢复模型等。
◆OBJECT_ID返回指定数据库对象名的标识号
◆OBJECT_NAME返回指定数据库对象标识号的对象名。
◆OBJECTPROPERTY返回指定数据库对象标识号的有关信息,如是否为表,是否为约束等。
◆fn_listextendedproperty返回数据库对象的扩展属*值,如对象描述、格式规则、输入掩码等。
由于我们无法利用到存储过程与函数的返回结果,因此只有在我们关心的只是查询的结果,而不需要进一步利用这些结果的时候,我们会使用系统存储过程与系统函数来查询元数据。
例如,如果要获得当前服务器上所有数据库的基本信息,我们可以在查询分析器里面运行:
EXEC sp_databases
GO
在返回结果中我们可以看到数据库的名称、大小及备注等信息。
但是如果要引用这部分信息,或者存储这部分信息以供后面使用,那么我们必须借助中间表来完成这个操作:
CREATE TABLE#sp_result
(
DATABASE_NAME sysname,
DATABASE_SIZE int,
REMARKS varchar(254) NULL
)
GO
INSERT INTO#sp_result
EXEC('sp_databases')
GO
使用信息架构视图访问元数据
信息架构视图基于 SQL-92标准中针对架构视图的定义,这些视图独立于系统表,提供了关于 SQL Server元数据的内部视图。信息架构视图的最大优点是,即使我们对系统表进行了重要的修改,应用程序也可以正常地使用这些视图进行访问。因此对于应用程序来说,只要是符合 SQL-92标准的数据库系统,使用信息架构视图总是可以正常工作的。
信息架构视图
◆INFORMATION_SCHEMA.CHECK_CONSTRAINTS:返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。
◆INFORMATION_SCHEMA.COLUMNS:返回当前数据库中当前用户可以访问的所有列及其基本信息。
◆INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE:返回当前数据库中定义了约束的所有列及其约束名。
◆INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE:返回当前数据库中定义了约束的所有表及其约束名。
◆INFORMATION_SCHEMA.KEY_COLUMN_USAGE:返回当前数据库中作为主键/外键约束的所有列。
◆INFORMATION_SCHEMA.SCHEMATA:返回当前用户具有权限的所有数据库及其基本信息。
◆INFORMATION_SCHEMA.TABLES:返回当前用户具有权限的当前数据库中的所有表或者视图及其基本信息。
◆INFORMATION_SCHEMA.VIEWS:返回当前数据库中的当前用户可以访问的视图及其所有者、定义等信息。
由于这些信息架构都是以视图的方式存在的,因此我们可以很方便地获得并利用需要的信息。
例如,我们要得到某个表有多少列,可以使用以下语句:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='mytable'
使用系统表访问元数据
虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要对系统表进行查询。因为SQL Server将所有数据库对象的信息均存放在系统表中,作为 SQL Server的管理、开发人员,了解各个系统表的作用将有助于我们了解 SQL Server的内在工作原理。
SQL Server的系统表非常多,其中最常用的与元数据查询有关的表有如下一些:
syscolumns存储每个表和视图中的每一列的信息以及存储过程中的每个参数的信息。
sysments存储包含每个视图、规则、默认值、触发器、CHECK约束、DEFAULT约束和存储过程的原始 SQL文本语句。
sysconstraints存储当前数据库中每一个约束的基本信息。
sysdatabases存储当前服务器上每一个数据库的基本信息。
sysindexes存储当前数据库中的每个索引的信息。
sysobjects存储数据库内的每个对象(约束、默认值、日志、规则、存储过程等)的基本信息。
sysreferences存储所有包括 FOREIGN KEY约束的列。
systypes存储系统提供的每种数据类型和用户定义数据类型的详细信息。
将系统存储过程、系统函数、信息架构视图与系统表结合使用,可以方便地让我们获得所有需要的元数据信息。
示例:
1、获得当前数据库所有用户表的名称。
SELECT OBJECT_NAME(id)
FROM sysobjects
WHERE xtype='U' AND OBJECTPROPERTY(id,'IsMSShipped')= 0
其中主要用到了系统表 sysobjects以及其属* xtype,还有就是用到了 OBJECTPROPERTY系统函数来判断是不是安装 SQL Server的过程中创建的对象。
2、获得指定表上所有的索引名称。
SELECT name FROM sysindexes
WHERE id= OBJECT_ID('mytable') AND indid> 0
综合实例
下面给出了一个存储过程,它的作用是自动将当前数据库的用户存储过程加密。
DECLARE@sp_name nvarchar()
DECLARE@sp_content nvarchar(2000)
DECLARE@asbegin int
declare@now datetime
select@now= getdate()
DECLARE sp_cursor CURSOR FOR
SELECT object_name(id)
FROM sysobjects
WHERE xtype='P'
AND type='P'
AND crdate<@now
AND OBJECTPROPERTY(id,'IsMSShipped')=0
OPEN sp_cursor
FETCH NEXT FROM sp_cursor
INTO@sp_name
WHILE@@FETCH_STATUS= 0
BEGIN
SELECT@sp_content= text FROM
sysments WHERE id= OBJECT_ID(@sp_name)
SELECT@asbegin=
PATINDEX('%AS'+ char(13)+'%',@sp_content)
SELECT@sp_content=
SUBSTRING(@sp_content, 1,@asbegin- 1)
+' WITH ENCRYPTION AS'
+ SUBSTRING(@sp_content,@asbegin+2, LEN(@sp_content))
SELECT@sp_name='DROP PROCEDURE ['+@sp_name+']'
EXEC sp_executesql@sp_name
EXEC sp_executesql@sp_content
FETCH NEXT FROM sp_cursor
INTO@sp_name
END
CLOSE sp_cursor
DEALLOCATE sp_cursor
该存储过程利用了 sysobjects和 sysments表,并巧妙地修改了原存储过程的 SQL定义语句,将 AS修改为了 WITH ENCRYPTION AS,从而达到了加密存储过程的目的。本存储过程在 SQL Server 2000上通过。
您可能感兴趣的文章:调用MySQL中数据库元数据的方法SQL Server使用 SET FMTONLY ON获得表的元数据
三、服务器中的高速缓存盘***元数据盘***系统盘什么意思
二楼说的很专业我来说个简单的:raid0就是把多个(最少2个)硬盘合并成1个逻辑盘使用,数据读写时对各硬盘同时操作,不同硬盘写入不同数据,速度快。raid1就是同时对2个硬盘读写(同样的数据)。强调数据的安全*。比较浪费。raid5也是把多个(最少3个)硬盘合并成1个逻辑盘使用,数据读写时会建立奇偶校验信息,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。相当于raid0和raid1的综合。raid10就是raid1+raid0,比较适合速度要求高,又要完全容错,当然¥也很多的时候。最少需要4块硬盘(注意:做raid10时要先作RAID1,再把数个RAID1做成RAID0,这样比先做raid0,再做raid1有更高的可靠*)