SQL Server数据库跨数据库服务器查询和跨表更新的相关知识是本文我们主要要介绍的内容,接下来我们就通过一个实例来介绍这一过程。实例是这样的:想实现的功能很简单, 在我的本地一个表用来保存省的信息: 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 WHERElocalDB.ProvinceName=serverDB.Province_Name )

--跨服务器查询生成的临时表结果

SELECT * FROM #t

通过上面的SQL语句,我将两个服务器,两个数据库的两个表做了内联查询,并且将结果保存到了本地的临时表#t中.

跨表更新

接下来希望将#t 中的数据更新到T_Province表中.其实跨表更新很简单, 但是一开始头脑中这个概念, 不知道set子句如何写.下面是最后的成果:

--更新本地的 T_Province表数据UPDATE T_Province SETT_Province.ProvinceNameEn= ( SELECT #t.ProvinceNameEn) ,T_Province.ProvinceID= (SELECT #t.ProvinceID)

ROM T_Province, #t WHERET_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 的数据类型为 sysname,没有默认值。

[ @srvproduct = ] 'product_name'

要添加为链接服务器的OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认值为 NULL。如果为 SQL Server,则不必指定 provider_name、data_source、location、provider_string 和 catalog。

[ @provider = ] 'provider_name'

与此数据源对应的 OLE DB 访问接口的唯一编程标识符 (PROGID)。对于当前计算机中安装的指定 OLE DB 访问接口,provider_name 必须唯一。provider_name 的数据类型为 nvarchar(128),默认值为 NULL;但如果忽略 provider_name,则使用 SQLNCLI。SQLNCLI 是 SQL 本机 OLE DB 访问接口。OLE DB 访问接口应以指定的 PROGID 在注册表中注册。

[ @datasrc = ] 'data_source'

由OLE DB 访问接口解释的数据源的名称。data_source 的数据类型为 nvarchar(4000)。data_source 作为 DBPROP_INIT_DATASOURCE 属性传递以初始化 OLE DB 访问接口。

[ @location = ] 'location'

由 OLE DB 访问接口解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认值为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以初始化 OLE DB 访问接口。

[ @provstr = ] 'provider_string'

OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认值为 NULL。provstr 或传递给 IDataInitialize 或设置为 DBPROP_INIT_PROVIDERSTRING 属性以初始化 OLE DB 访问接口。

在针对 SQL 本机客户端 OLE DB 访问接口创建链接服务器后,可将 SERVER 关键字用作 SERVER=servername\instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是运行 SQL Server 的计算机名称,instancename 是用户将连接到的特定 SQL Server 实例的名称。

[ @catalog = ] 'catalog'

与 OLE DB 访问接口建立连接时所使用的目录。catalog 的数据类型为 sysname,默认值为 NULL。catalog 作为 DBPROP_INIT_CATALOG 属性传递以初始化 OLE DB 访问接口。在针对 SQL Server 实例定义链接服务器时,目录指向链接服务器映射到的默认数据库。

登录链接服务器 sp_addlinkedsrvlogin

语法

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' [ , [ @useself = ] 'useself' ] [ , [ @locallogin = ] 'locallogin' ] [ , [ @rmtuser = ] 'rmtuser' ] [ , [ @rmtpassword = ] 'rmtpassword' ]

参数

[ @rmtsrvname = ] 'rmtsrvname'

应用登录映射的链接服务器的名称。rmtsrvname 的数据类型为 sysname,没有默认值。

[ @useself = ] 'useself'

确定用于连接远程服务器的登录名。useself 的数据类型为 varchar(8),默认值为 TRUE。

值为true 时指定登录使用自己的凭据连接 rmtsrvname,忽略 rmtuser 和 rmtpassword 参数。false 指定使用 rmtuser 和 rmtpassword 参数连接指定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也设置为 NULL,则不使用登录名或密码来连接链接服务器。

[ @locallogin = ] 'locallogin'

本地服务器上的登录。locallogin 的数据类型为 sysname,默认值为 NULL。NULL 指定此项应用于连接到 rmtsrvname 的所有本地登录。如果不为 NULL,则 locallogin 可以是 SQL Server 登录或Windows 登录。对于 Windows 登录来说,必须以直接的方式或通过已被授权访问的 Windows 组成员身份授予其访问 SQL Server 的权限。

[ @rmtuser = ] 'rmtuser'

当 useself 为 false 时,表示用于连接 rmtsrvname 的用户名。rmtuser 的数据类型为 sysname,默认值为 NULL。

[ @rmtpassword = ] 'rmtpassword'

与 rmtuser 关联的密码。rmtpassword 的数据类型为 sysname,默认值为 NULL。

使用链接服务器

服务器名.数据库名.dbo.表名

删除链接服务器 sp_dropserver

语法

sp_dropserver [ @server = ] 'server' [ , [ @droplogins = ] { 'droplogins' | NULL} ]

参数

[ @server = ] 'server'

要删除的服务器。server 的数据类型为 sysname,无默认值。server 必须存在。

[ @droplogins = ] 'droplogins' | NULL

指示如果指定了 droplogins,那么对于server,还必须删除相关的远程服务器和链接服务器登录名。@droplogins 的数据类型为 char(10),默认值为 NULL。

关于SQL Server跨数据库服务器查询和跨表更新的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

sql server跨服务器修改数据,SQL Server跨数据库服务器查询和跨表更新的详细操作...相关推荐

  1. 游戏服务器如何修改属性,游戏服务器修改数据

    游戏服务器修改数据 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 规划数据服务 ...

  2. 服务器之间数据文件推送,数据库数据推送到另外服务器

    数据库数据推送到另外服务器 内容精选 换一换 该方案优点是简单,容易上手,缺点是停机时间较长.因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成的数据.由于云数据库RDS服务 ...

  3. 天龙八部网单服务器修改爆率,天龙八部网游单服务器修改资料.doc

    天龙八部网游单服务器修改资料 天龙八部网游单机服务器修改资料 天龙八部服务端修改之一 本帖最后由 香香 于 2010-2-9 19:16 编辑 1.修改全局经验倍数 角色的移动速度 \home\tlb ...

  4. 服务器监控之四SCOM管理及数据库服务器的部署

    第四章 SCOM管理及数据库服务器的部署 为尽可能的和生产环境的部署一致,本次动手实验OpsMgr服务器的部署分两部分完成,亦既是把OpsMgr管理服务器和数据库服务器(含报表服务器)两种角色分置在不 ...

  5. 数据科学+python+R+数据库+机器学习+(速查表)cheat sheets大全

    数据科学+python+R+数据库+机器学习+(速查表)cheat sheets大全 Learn, compete, hack and get hired! 学习.竞争.精进.996. 东西永远学不完 ...

  6. SQL Server插入或修改数据是中文乱码的问题

    SQL Server中乱码解决方案: 在Sql Server2005英文版中,如果未对Varchar类型的字段进行设置,那么很多朋友会发现向数据库中插入记录时,如果对应的varchar类型字段 的值为 ...

  7. SQL Server 2008 R2导出数据脚本和导入数据库脚本的方法(原创+转载)

    以前看到有些朋友说必须SQL Server 2008才能导出包含数据的脚本,后来仔细研究发现其实SQL Server 2008 R2也是可以的,只需在导出的时候在高级中设置一下即可. 1.首先在数据库 ...

  8. sql server 千万级大数据sql更新_医疗SQL每日实例6数据更新大法

    Update Day 数据更新大法 生/命/不/止/SQL/不/休 01 更新数据的铁规 所有数据在被更新之前,必须先查询出数据结果,确认无误,再复制整行到下两行.将select * 更改为upate ...

  9. 数据库服务器修改地址,SQL数据库服务器IP地址修改

    SQL数据库服务器IP地址修改 内容精选 换一换 云数据库RDS服务支持开启公网访问功能,通过弹性公网IP进行访问.您也可通过弹性云服务器的内网访问云数据库RDS.准备弹性云服务器或可通过公网访问云数 ...

最新文章

  1. Linux安装指定版本Angular Cli
  2. 【白话机器学习】算法理论+实战之PageRank算法
  3. linux 中断奶乱码,科学断奶经历:早中晚三次母乳,一个月内循序渐进自然断奶...
  4. 绕过 WAF:绕过一些 WAF 设备的 Burp 插件
  5. 【机器学习-西瓜书】七、朴素贝叶斯分类器
  6. 腾讯的bugly的更新和热更新
  7. Windows10系统的MSDN下载和通过U盘进行安装的步骤(亲测有效)
  8. BitTorrent协议规范(BitTorrent Protocol Specification)之Peer Wire协议(Peer Wire Protocol)-第四部分
  9. 考题篇(6.2) 07 ❀ FortiGate ❀ Fortinet 网络安全专家 NSE 4
  10. 【小迪安全】web安全|渗透测试|网络安全 | 学习笔记-5
  11. ColorPicker一款安卓取色器,模仿ps取色板
  12. 计算机信息技术基础...,计算机信息技术基础
  13. 持续集成插件安装网站
  14. swapidc鸟云模板源码开源
  15. 全国省份和大学json
  16. 看流行韩剧 简单学韩语
  17. php hex加密解密方法,php hex加密解密函数使用例子
  18. 倒计时翻牌器动画实现
  19. RK3368固件烧写
  20. 灯光秀制作讲解_灯光秀如何创作及其流程(一)

热门文章

  1. 急性中耳炎的治疗行业调研报告 - 市场现状分析与发展前景预测
  2. 2021-2025年中国充气救生衣行业市场供需与战略研究报告
  3. 马化腾去年年薪同比下降 25%,腾讯的下一步怎么走?
  4. Angular 导致公司损失数十亿美元!
  5. ​iPhone 13或有日落金玫瑰金配色;传阿里巴巴和腾讯考虑互相开放生态系统;抖音内测“心动外卖”|极客头条...
  6. 一场大火,让云计算巨头的数据中心化为灰烬!10 万Rust 游戏玩家的数据永久丢失,无法恢复
  7. 把斯坦福大学土地租出去?特曼坦言:目的就是赚钱
  8. 探究贴片广告背后的技术大片
  9. Kaggle 年度报告出炉:数据科学家年轻高学历,薪资近百万
  10. 人人都可做 AI 开发者,云知声 AI 开放平台重磅上线