<%@ page contentType="text/html; charset=gb2312"%> 由浅入深讲解数据库中Synonym的使用方法
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
由浅入深讲解数据库中Synonym的使用方法
     发布者: 发布时间:2008-05-06
1.Synonym的概念

Synonym(同义词)是SQL Server 2005的新特性。推出已经有几年的时间了。我们可以简单的理解Synonym为其他表的别名。本文中使用Northwind数据库为示例:


Create Synonym MyCustomers FOR Customers
 

为Customers表创建一个Synonym,叫MyCustomers。 我们可以把这个MyCustomers当作一个普通的表,可以对它进行查询,更新,删除和插入。例如:

查询: Select * from MyCustomers.

插入: Insert into MyCustomers (CustomersID, CompanyName) values ('Tom', 'MS')

所有的操作,和普通的表没有区别。


2.Synonym的实际应用

在你的程序发布的时候,你突然发现你需要更改某个表名,或字段名。而你的程序已经不可能修改。这时,怎么办呢?那就创建Synonym吧。当然,在sql2000时代,你可以使用view来做这个事情,或sprocs或udf等。但Synonym有其它所不能的功能,那就是跨数据库,跨服务器。

 

3.Synonym在同一服务器上的不同数据库

对于同一服务器上的不同数据库,我们可以使用Synonym,将其他数据库中的表或view或sprocs及udf在本数据库中映射别名。这样,就可以不用更改连接字符串,而在当前对话数据库的情况下,获取其他数据库的数据,并对它进行,查询,更新,删除和插入工作。

先假设已经存在Northwind数据库,然后,再建一个数据库。我们在新的数据库上,创建Customer表的Synonym.


Create Synonym MyCustomers For Northiwind.dbo.Customers
 


需要大家注意的是,后面需要写清那个数据库,那个表,中间dbo为表的owner.

然后,运行 Insert into MyCustomers (CustomersID, CompanyName) values ('Tom', 'MS')

和Select * from MyCustomers. 看看是不是真的像普通表那样。


4.Synonym在不同服务器上的不同数据库

假设一下,我们有一台数据库服务器叫SqlTest。上面有个数据库叫Northwind。我们本地还有一台数据库服务器。叫LocalTest. 其上面有一数据库叫Northwind或其他什么的。突然有一天,为了使本地的数据库跑的更快,本地的老数据被移到SqlTest上去了,本地只保存最近更新的。那老数据总还是要用的,怎么样实现不同服务器之间的数据操作呢?那就用Synonym吧。如下:


Create Synonym MyCustomers For SqlTest.Northiwind.dbo.Customers
 


你可能会发现,只是在上面这个例子的基础上,加了个机器名字。就这么简单?不是吧?那台服务器还不一定知道用户名和密码呢。对,是的,还要在本地服务器上,注册一下远程的服务器。使用sp_addlinkedserver,此存储过程定义如下所示:


Exec sp_droplinkedsrvlogin daval\sql2005,Null
Exec sp_dropserver daval\sql2005

EXEC sp_addlinkedserver

@server='daval\sql2005',--被访问的服务器别名

@srvproduct='',

@provider='SQLOLEDB',

@datasrc='D12'   --要访问的服务器
EXEC sp_addlinkedsrvlogin

'daval\sql2005', --被访问的服务器别名

'false',

NULL,

'sa', --账号

'123456' --密码

Select * from MyCustomers



(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
三大措施设置数据库安全 保障网站安全运营(1)
三大措施设置数据库安全 保障网站安全运营 (2)
如何建立JSP操作用以提高数据库访问效率
Mule 2.0 发布
雅虎暂时逃脱微软魔掌
雅虎暂时逃脱微软魔掌
 
最近评论:
        
鍥炲
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号