找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 2465|回复: 1

[数据库知识] 由浅入深讲解数据库中Synonym的使用方法

[复制链接]
发表于 2009-6-7 16:58:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
数据库中Synonym的使用方法:

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
  • 打卡等级:无名新人
  • 打卡总天数:4
  • 打卡月天数:0
  • 打卡总奖励:10
  • 最近打卡:2024-10-07 11:19:24
发表于 2009-6-11 09:06:27 | 显示全部楼层
、学习了·\
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-25 12:46 , Processed in 0.038168 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表