利用同义词简化SQL Server 2005开发

2016-01-29 16:07 1 1 收藏

利用同义词简化SQL Server 2005开发,利用同义词简化SQL Server 2005开发

【 tulaoshi.com - SQLServer 】

一. 引言

  如果你曾经使用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仅仅检查基对象。

  例如,在AdventureWorks示例数据库中,你可以以下列方式创建一个同义词:

CREATE SYNONYM ProdCat
FOR AdventureWorks.Production.ProductCategory
  之后,你可以继续使用在SQL语句中的同义词了。例如:

SELECT * FROM ProdCat
  图1显示出相应的结果:



  当你使用完一个同义词后,你可以使用DROP SYNONYM语句来去掉它,它具有你期望的语法格式:

DROP SYNONYM [schema_name.]synonym_name  三. 几点细节

  当然,对于同义词的使用上也存在一些限制。对于初学者来说,你不能为任何东西都创建一个同义词。SQL Server 2005比以前引入了更多的对象,但是同义词仅限于应用于核心集的最有用的一些对象中:

  · 表

  · 视图

  · 存储过程

  · CLR存储过程

  · CLR函数

  · 复制过滤过程

  · 扩展存储过程

  · SQL标量,表值以及内联表值函数

  关于在什么情况下使用同义词还存在一些限制。一般来说,你可以在下面这些T-SQL语句中使用一个同义词:

  · SELECT

  · sub-selects

  · UPDATE

  · INSERT

  · DELETE

  · EXECUTE

  如果你仔细考虑一下,那么第二个表不应该太奇怪:它包含了最常用的where语句。注意,你不能在一个DDL语句中参考一个同义词。如果你想使用ALTER TABLE来改变ProductCategory表中的内容,那么,你需要使用基表而不是使用ProdCat同义词。

  为了创建一个同义词,你需要CREATE SYNONYM权限。在创建一个同义词后,它就有了与其自己相关联的GRANT,DENY和REVOKE许可权。

  四. 把同义词作为一个抽象层

  除了节省你的输入时间外,同义词还可以用作你的数据库的不稳定的或经常更新部分的一个抽象层。这是因为同义词及其基对象之间的绑定仅在运行时

来源:https://www.tulaoshi.com/n/20160129/1497541.html

延伸阅读
在SQL Server 配置管理器中,展开SQL Server 2005的网络配置,然后点击服务器实例如:MSSQLSERVER 的协议。 在右窗格中,双击TCP/IP协议。 在TCP/IP属性对话框中,单击IP地址选项卡。 在TCP端口框中的IPAll节,输入一个可用的端口号。对于本教程中,我们将使用1500。 单击确定以关闭该对话框,然后单击确定的警告说,必须重新启动服务。 在...
标签: SQLServer
SQL SERVER 2005中,终于引入了表分区,就是说,当一个表里的数据很多时,可以将其分拆到 多个的表里,大大提高了性能。下面举例子说明之 比如,在C盘下建立如下几个目录 C:Data2Primary C:Data2FG1 C:Data2FG2 C:Data2FG3 C:Data2FG4 其中primary存放的是主数据库文件,其他FG1--FG4存放四个单独的文件组,可以见创立数据库 Data Partition DB...
最低要求 处理器 500MHz或更快处理器(推荐1GHz或更快) 操作系统 •SQLServer2005EnterpriseEdition可在以下操作系统上运行: •WindowsServer2003,StandardEdition1 •WindowsServer2003,EnterpriseEdition2 •WindowsServer2003,DatacenterEdition3 •WindowsSmallBusinessServer2003Standa...
相比SQL Server 2000提供的FOR XML查询,SQL Server 2005版本对现有功能增强的基础上增加了不少新功能,最为吸引人的功能包括对Xml数据类型支持、使用PATH模式以及嵌套FOR XML查询支持等,这意味着通过新的FOR XML查询功能可以构造出结构更加灵活的Xml数据。 在SQL Server 2000中FOR XML查询的结果是直接以文本方式返回到客户端,为支...
由于SQL Server 2005 Compact Edition和SQL Server 2005是同时代的产品,所以它们之间的互操作和结合性较之以前的SQL Server版本要好,为此如果要考虑使用SQL Server 2005 Compact Edition中的合并复制和远程数据访问技术进行数据同步的话,最好是使用SQL Server 2005作为后端的数据库。 现在只要是能运行Visual Studio 2005的计算机...

经验教程

952

收藏

40
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部