技术开发 频道

数据库中使用 Synonym和openquery


【IT168技术文档】

  如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据,又该怎么办呢?那就让我为你介绍Synonym和openquery吧。

  1, 什么是Synonym
  Synonym(同义词)是Sql 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
0
相关文章