请问什么是“同义词”啊?有什么好处呢?

解决方案 »

  1.   

    Microsoft SQL Server 引入了同义词的概念。同义词是架构范围内的对象的另一名称。通过使用同义词,客户端应用程序可以使用由一部分组成的名称来引用基对象,而不必使用由两部分、三部分或四部分组成的名称。
      

  2.   

    义词是用来实现下列用途的数据库对象:为可以存在于本地或远程服务器上的其他数据库对象(称为基对象)提供备用名称。
    提供抽象层以免对客户端应用程序基对象的名称或位置进行更改。
    例如,名为 Server1 的服务器上有 Adventure Works 的 Employee 表。若要从其他服务器 Server2 引用此表,则客户端应用程序必须使用由四个部分构成的名称 Server1.AdventureWorks.Person.Employee。另外,如果更改表的位置(例如,更改为其他服务器),则必须修改客户端应用程序以反映此更改。若要解决这两个问题,您可以在 Server2 上为 Server1 上的 Employee 表创建一个同义词 EmpTable。这样,客户端应用程序只需使用由一个部分构成的名称 EmpTable 来引用 Employee 表。另外,如果 Employee 表的位置发生变化,则必须修改同义词 EmpTable 以指向 Employee 表的新位置。由于不存在 ALTER SYNONYM 语句,因此必须首先删除同义词 EmpTable,然后重新创建同名的同义词,但是要将同义词指向 Employee 的新位置。
      

  3.   

    同义词不能是另一个同义词的基对象,也不能引用用户定义聚合函数。同义词与其基对象之间只是按名称绑定。对基对象的存在性、类型和权限检查都在运行时执行。因此,可以修改或删除基对象,也可以先删除基对象,然后用与原始基对象同名的另一个对象来替换该基对象。例如,有一个引用 Adventure Works 中的 Person.Contact 表的同义词 MyContacts。如果将 Contact 表删除,并用名为 Person.Contact 的视图替换该表,则 MyContacts 将引用 Person.Contact 视图。同义词的引用不是绑定到架构的。因此,可以随时删除同义词。但删除同义词后,会留下已删除同义词的无关联引用,而只有在运行时才会发现这些引用。