跨数据库服务器查询和跨表更新.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
跨数据库服务器查询和跨表更新 一.摘要 本文通过实际业务场景讲解如何实现跨数据库服务器的数据查询, 以及跨表更新的SQL语法. 二.业务场景 想实现的功能很简单, 在我的本地一个表用来保存省的信息: T_Province 在另外一台服务器上也有一个保存省的表province,其中有我本地没有的provience_name_en和provience_id信息.我希望将它们保存到我的表中. 虽然用程序很容易实现,但是我觉得如果能直接操作数据库的话将更简单,而且还能学习到跨服务器查询的知识. 三.准备工作 首先我在本地 T_Province 表中添加了 ProvinceNameEn 和 ProvinceId 两个字段.接下来就要想办法为这两个字段填充数据. 四.跨服务器查询 首先需要解决跨服务器查询的问题. 先来看我的最终实现: --创建链接服务器 exec sp_addlinkedserver @server= SQL2, @srvproduct= , @provider=SQLNCLI, @datasrc = 192.168.9.123 --登录链接服务器 exec sp_addlinkedsrvlogin @rmtsrvname = SQL2, @useself = false , @locallogin = null, @rmtuser =sa, @rmtpassword = 123456 ? 上面使用sp_addlinkedserver和sp_addlinkedsrvlogin 与服务器建立了链接, 接下来就可以直接查询远程服务器上的数据了: --创建临时表 create table #t (ProvinceName nvarchar(50), ProvinceNameEn nvarchar(50), ProvinceID nvarchar(50)) INSERT INTO #t(ProvinceName, ProvinceNameEn, ProvinceID) ( SELECT localDB.ProvinceName, serverDB.province_name_en, serverDB.province_ID FROM T_Province as localDB, SQL2.bdg_web_retail.dbo.province as serverDB WHERE localDB.ProvinceName = serverDB.Province_Name ) --跨服务器查询生成的临时表结果 SELECT * FROM #t ? 通过上面的SQL语句,我将两个服务器,两个数据库的两个表做了内联查询,并且将结果保存到了本地的临时表#t中. 五.跨表更新 接下来希望将#t 中的数据更新到T_Province表中.其实跨表更新很简单, 但是一开始头脑中这个概念, 不知道set子句如何写.下面是最后的成果: --更新本地的 T_Province表数据 UPDATE T_Province SET T_Province.ProvinceNameEn = ( SELECT #t.ProvinceNameEn) , T_Province.ProvinceID = (SELECT #t.ProvinceID) FROM T_Province, #t WHERE T_Province.ProvinceName = #t.ProvinceName ? 需要注意的是我最开始使用了Declare建立表变量的形式创建了@t,但是执行update操作时提示必须声明标量变量@t, 换成了临时表#t就没有问题. 六.跨服务器查询相关知识 下面对跨服务器查询用到的知识进行讲解. 创建链接服务器 sp_addlinkedserver 创建链接服务器。链接服务器让用户可以对 OLE DB 数据源进行分布式异类查询。在使用 sp_addlinkedserver 创建链接服务器后,可对该服务器运行分布式查询。如果链接服务器定义为 SQL Server 实例,则可执行远程存储过程。 语法 sp_addlinkedserver [ @server= ] server [ , [ @srvproduct= ] product_name ] [ , [ @provider= ] provider_name ] [ , [ @datasrc= ] data_source ] [ , [ @location= ] location ] [ , [ @provstr= ] provider_string ] [ , [ @catalog= ] catalog ] 参数 [ @server = ] server 要创建的链接服务器的名称。server 的数据类型为 sy

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档