日期:2013-01-28  浏览次数:20389 次

  一. 引言

  如果你曾经使用SQL Server开发过任何软件,那么你肯定会习惯于使用四部分标识符来参考一个对象:

  [[[server.][database].][schema_name].]object_name

  正如上面的方括号所显示的,该语法的不同部分可以被忽略,只需你提供足够的表达来无二义地标识你的对象即可。例如,下面所有这些表达都可能参考相反的对象:

  Server1.AdventureWorks.Production.ProductCategory
AdventureWorks.Production.ProductCategory
AdventureWorks..ProductCategory
ProductCategory

  在大多数情况下,你可以仅使用三部分名字而忽略服务器名-除非你是在处理在一个连接的服务器上的对象。默认情况下,所有对象的上下文都是本地数据库-你的SQL语句在其中执行。但是,有些情况下,或者更为精确地说,你必须使用这整个四部分命名(或称作一种全称限定名)。但是,在SQL Server 2005中,这种情况有所改变。

  二. 熟悉同义词

  SQL Server 2005引入了一个同义词的概念,这是一个单部分的名字,它可以替换在许多SQL语句中的一个两、三或四部分的名字。使用同义词可以让你减少输入,而且还能提供一个笼统层来为你保护底层对象的改变。为了理解其任务原理,让我们先看一下创建同义词的语法。下面是CREATE SYNONYM语句的语法:

  CREATE SYNONYM [schema_name.]synonym_name FOR object_name

  在此,object_name是一个SQL Server对象(全称限定曾经足以能够标识出这个对象)的名字,而synonym_name是你想赋给它的新名字。如果你不想为同义词指定一种模式,那么SQL Server使用当前的用户的默认模式。当你创建同义词时,相应的对象不需求存在,由于同义词是迟绑定的:当你实际上使用同义词时,SQL Server仅仅检查基对象。