探索SQL Server 2008中的T-SQL元数据函数(上)

日期: 2010-10-10 作者:Robert Sheldon翻译:冯昀晖 来源:TechTarget中国 英文

SQL Server 2008提供了称为元数据函数的一组函数。这些函数使你可以提取关于数据库和数据库对象的信息。例如,你可以提取赋予数据库,对象,表或者数据类型的ID。你还可以查看各种类型对象的属性设置,比如索引是否为簇索引,或者列是否允许为空值。

  这里我将给你介绍几个元数据函数,并给出一些示例来演示它们的用法。在我创建这些例子时,我都是在“AdventureWorks2008”示例数据库的上下文环境中运行的。一些示例还引用了“AdventureWorks2008”数据库,但是你可以很容易地用其他数据库替代。   注意:尽管我讲到了许多元数据函数,我也没有把所有元数据函数都讲完。

请一定参考……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQL Server 2008提供了称为元数据函数的一组函数。这些函数使你可以提取关于数据库和数据库对象的信息。例如,你可以提取赋予数据库,对象,表或者数据类型的ID。你还可以查看各种类型对象的属性设置,比如索引是否为簇索引,或者列是否允许为空值。

  这里我将给你介绍几个元数据函数,并给出一些示例来演示它们的用法。在我创建这些例子时,我都是在“AdventureWorks2008”示例数据库的上下文环境中运行的。一些示例还引用了“AdventureWorks2008”数据库,但是你可以很容易地用其他数据库替代。

  注意:尽管我讲到了许多元数据函数,我也没有把所有元数据函数都讲完。请一定参考SQL Server 2008联机丛书中的“元数据函数(Transact-SQL)”来获取完整列表。从那里你可以链接到每个函数的主题介绍中,了解有关函数如何使用的详细说明。

  查看对象名称和ID

  我们要看的前两个元数据函数是“DB_ID”和“DB_NAME”。你可以猜到,“DB_ID”返回指定数据库或者当前数据库的ID,而“DB_NAME”返回指定数据库或者当前数据库的名称。下面的SELECT语句演示了如何使用这两个函数:

  SELECT
  DB_ID() AS Id_DefaultDB,
  DB_ID('AdventureWorksDW2008') AS Id_SpecificDb,
  DB_NAME() AS Name_DefaultDb,
  DB_NAME(10) AS Name_SpecificDb;

  “DB_ID”函数可以接收一个参数:一个字符串值,代表数据库的名称。我在“DB_ID”的第一个例子中没有包含该参数,因此该函数返回当前数据库的ID,本例中就是“AdventureWorks2008”。在“DB_ID”函数的第二个例子中,我指定了“AdventureWorksDW2008 ”数据库作为参数。不过,要注意该名称必须用单引号括起来。

  “DB_NAME”函数的用法也类似,只有一点差异就是它的参数是一个整形(Int)值,而不是字符串。在“DB_NAME”的第一个例子中,仍然是针对当前数据库。在“DB_NAME”的第二个例子中,我指定的参数值是10,它是我系统中“AdventureWorksDW2008 ”数据库的ID。

  该SELECT语句返回结果如下表所示:

Id_DefaultDbId_SpecificDbName_DefaultDbName_SpecificDb
810AdventureWorks2008AdventureWorksDW2008

  “DB_ID”的第一个例子返回的值是8,这是我系统中“AdventureWorks2008 ”数据库的ID,而该函数的二个例子返回的是10。正如你所预料的,“DB_NAME”函数的第一个例子返回“AdventureWorks2008 ”数据库,第二个例子返回“AdventureWorksDW2008”。

  接下来我们要介绍的两个元数据函数是“SCHEMA_ID”和“SCHEMA_NAME”,它们与“DB_ID”和“DB_NAME”也类似。“SCHEMA_ID”函数返回与对象名称有关的对象ID,接收一个非必填的字符串参数(对象名称)。“SCHEMA_NAME”函数返回指定对象ID的对象名称,接收一个非必填的整形参数(对象ID)。下面的SELECT语句展示了这两个函数的用法:

  SELECT
  SCHEMA_ID() AS Id_DefaultSchema,
  SCHEMA_ID('Sales') AS Id_SpecificSchema,
  SCHEMA_NAME() AS Name_DefaultSchema,
  SCHEMA_NAME(9) AS Name_SpecificSchema;

  如果你没有指定对象名称或者ID,函数就会返回该对象相关联的调用者的信息。例如,与我关联的该对象是“dbo”,对象ID是1。那意味着“SCHEMA_ID”的第一个例子返回值为1,而“SCHEMA_NAME”的第一个例子返回值是“dbo”,如下面的结果所示:

Id_DefaultSchemaId_SpecificSchemaName_DefaultSchemaName_SpecificSchema
19dboSales

  要注意我使用“Sales”作为“SCHEMA_ID”第二个例子的参数。如该结果所示,与该对象关联的ID是9,这一点可以由“SCHEMA_NAME”函数第二个例子返回的结果得到验证。

相关推荐