首页 > 数据库 >sql server 不同站点数据库操作

sql server 不同站点数据库操作

时间:2023-12-25 11:33:17浏览次数:41  
标签:dbo -- 数据库 表名 server 站点 sql 服务器 select

https://www.cnblogs.com/zhaoyl9/p/11527090.html

SELECT * FROM [120.76.111.111,1433].bole_data.dbo.ctm_info

SELECT * FROM [111.230.1111,1433].bole_data.dbo.ctm_info

INSERT INTO [120.76.111.111,1433].bole_data.dbo.ctm_info SELECT * FROM [120.76.111.111,1433].bole_data.dbo.ctm_info

 

什么是跨服务器操作?

跨服务器操作就是可以在本地连接到远程服务器上的数据库,可以在对方的数据库上进行相关的数据库操作,比如增删改查。

为什么要进行跨服务器操作

随着数据量的增多,业务量的扩张,需要在不同的服务器安装不同的数据库,有时候因为业务需要,将不同的服务器中的数据进行整合,这时候就需要进行跨服务器操作了。

跨服务器操作的工具是什么?

DBLINK(数据库链接),顾名思义就是数据库的链接,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

一、不同服务器不同数据库:

图形创建SQL Server远程链接:

1. 登录到本地数据库-->服务器对象-->链接服务器(右键)-->新建链接服务器

2. 在弹出的对话框中输入相关信息

3. 点击左侧“安全性”,出现以下页面,输入对方数据库的账号密码即可

4. 点击“确定”后即创建成功,如下图可以看到创建好的链接服务器

5. 下面使用创建好的链接试着查询对方服务器的表来验证一下

原文地址:http://baijiahao.baidu.com/s?id=1601340639397887562&wfr=spider&for=pc

代码创建SQL Server远程链接:

1. 创建链接服务器

1.1 创建一个链接名

exec sp_addlinkedserver 'LinkName', '', 'SQLOLEDB', '远程服务器名或ip地址'   --有自定义实例名还要加上"/实例名"
/*例如:exec sp_addlinkedserver 'TonyLink', '', 'SQLOLEDB', '192.168.2.110' */  

1.2 创建登录信息(或叫创建链接服务器登录名映射)(只需选择一种方式)

1.2.1 以windows认证的方式登录

exec sp_addlinkedsrvlogin 'LinkName'  --或exec sp_addlinkedsrvlogin 'LinkName', 'true'

 /*例如:exec sp_addlinkedsrvlogin 'TonyLink'  */  

1.2.2 以SQL认证的方式登录                                                                    

exec sp_addlinkedsrvlogin 'LinkName', 'false', NULL, '用户名', '密码'

/*例如:exec sp_addlinkedsrvlogin 'TonyLink', 'false', null, 'sa', '123456' */

 

2. 链接服务器相关数据操作

2.1 查询

select * from LinkName.数据库名.架构名.表名

/*例如:select * from TonyLink.LoadData.dbo.XimaArea */

2.2 把远程数据库查询的数据新增导入到本地表(本地表不需要提前存在,会自动创建)

select  * into 表名 from LinkName.数据库名.架构名.表名

/*例如:select * into Newtb fromTonyLink.LoadData.dbo.XimaArea */

2.3 更新

update LinkName.数据库名.架构名.表名 set 字段='值' where 字段='条件'

/*例如:update TonyLink.LoadData.dbo.XimaArea set area='中华区' where areaid=8 */

2.4 删除

delete LinkName.数据库名.架构名.表名 where 字段名='条件'

/*例如:delete TonyLink.LoadData.dbo.XimaArea where areaid=1 */

不再使用时删除链接服务器

exec sp_dropserver 'LinkName', 'droplogins'

3. 通过行集函数(openquery/openrowset/opendatasource)操作方法

3.1 openquery 方法(需要借助刚创建的链接服务器):

3.1.1 查询

select * from openquery(linkname, 'select * from 数据库名.架构名.表名')

/* 例如:select * from openquery(TonyLink, 'select * from LoadData.dbo.XimaArea') */

3.1.2 导入

3.1.2.1 把本地表(本地表需要提前存在)导入到远程表(两表之间列要对应)
insert openquery(linkname, 'select * from 数据库名.架构名.表名') select * from 本地表

/* 例如:insert openquery(TonyLink, 'select area from LoadData.dbo.XimaArea') select area from ttt */
3.1.2.2 把本地表(本地表需要提前存在)指定列导入远程表(两表之间列要对应)
复制代码
insert openquery(linkname, 'select * from 数据库名.架构名.表名') (列, 列...)

select 列, 列... from 本地表

/* 例如:insert openquery(TonyLink,'select * from LoadData.dbo.ximajxs')(jxsName, consignee, address)

    select jxsName, consignee, address from ttt  */
复制代码

3.1.3 更新

update openquery(linkname, 'select * from 数据库名.架构名.表名') set 字段='值' where 字段='条件'

/*例如:update openquery(TonyLink, 'select * from LoadData.dbo.ximajxs') set JxsName='北京有限公司' where jxsId=10 */

3.1.4 删除

delete openquery(linkname, 'select * from 数据库名.架构名.表名') where 字段名='条件'

/*例如:delete openquery(TonyLink, 'select * from LoadData.dbo.ximajxs') where jxsId=10 */

3.2 openrowset:

3.2.1 查询

select * from openrowset('SQLOLEDB', 'SQL服务器名'; '用户名'; '密码', 数据库名.dbo.表名)

报错问题:

解决方法:

在数据库服务实例名(如图1-3,GP-PC\sql2008位置)点击鼠标右键【方面】,在窗口【查看方面】— 点击【常规】— 【方面】— 选择【外围应用配置器】,找到【AdHocRemoteQueriesEnabled】— 选择【True】— 点击【确定】

3.2.2 生成本地表

select * into 表名 from openrowset('SQLOLEDB', 'SQL服务器名'; '用户名'; '密码', 数据库名.dbo.表名)

3.2.3 把本地表导入到远程表

insert openrowset('SQLOLEDB', 'SQL服务器名'; '用户名'; '密码', 数据库名.dbo.表名)

select * from 本地表

3.2.4 更新本地表

复制代码
update b
set b.address = a.area
from openrowset('SQLOLEDB', '192.168.2.110'; 'sa'; '123456', LoadData.dbo.XimaArea) as a
inner join ttt b
on a.areaid=b.areaid
复制代码

3.3 opendatasource

3.3.1  查询

select * from opendatasource('SQLOLEDB', 'Data Source=192.168.2.110; uid=sa; pwd=123456').LoadData.dbo.XimaArea

 4. 具体例子

复制代码
if exists(select 1 from master.dbo.sysservers where srvname='linktest')
begin
    exec sys.sp_droplinkedsrvlogin 'linktest', 'sa'
    exec sys.sp_dropserver 'linktest'
end

exec sys.sp_addlinkedserver
    @server = 'linktest', -- sysname
    @srvproduct = N'', -- nvarchar(128)
    @provider = N'SQLOLEDB', -- nvarchar(128)
    @datasrc = N'192.168.2.110' -- nvarchar(4000)

exec sys.sp_addlinkedsrvlogin 
    @rmtsrvname = 'linktest', -- sysname
    @useself = 'false', -- varchar(8)
    @locallogin = null, -- sysname
    @rmtuser = 'sa', -- sysname
    @rmtpassword = '123456' -- sysname

select * from linktest.LoadData.dbo.ximalss

if exists(select 1 from master.dbo.sysservers where srvname='linktest')
begin
    exec sys.sp_droplinkedsrvlogin 'linktest', 'sa'
    exec sys.sp_dropserver 'linktest'
end

go
复制代码

参考链接:https://www.cnblogs.com/w-y-f/archive/2012/05/07/2488474.html

二、同一台服务器不同数据库

select * from 数据库名..表名 或 select * from 数据库名.dbo.表名

 

 

 

 

 

 

 

 

 

 

 

  分类: SQLServer

标签:dbo,--,数据库,表名,server,站点,sql,服务器,select
From: https://www.cnblogs.com/csjoz/p/17925774.html

相关文章

  • 使用prisma studio链接任何server
    使用prismastudio链接任何server‍当我在serverless中使用prisma成功后理所当然的我想让prismastudio连接到我位于serverless中的服务当我在互联网搜索prismastudioremotesqlite时,我没有找到合适的方案和我同样想法的问题:https://community.fly.io/t/expose-sqli......
  • 解决SQL SERVER 2022数据库的表中修改字段的数据类型后不能保存
    SQLSERVER2008数据库的表中修改字段的数据类型后,不能保存:启动MSSQLSERVER2008,选择菜单工具-〉选项-〉左侧有个设计器-〉表设计器和数据库设计器。然后去掉“阻止保存要求重新创建表的更改”前面的勾。重新启动MSSQLSERVER2008即可http://kangry.net/blog/?type=article&......
  • 大数据从业者必知必会的Hive SQL调优技巧 | 京东云技术团队
    摘要:在大数据领域中,HiveSQL被广泛应用于数据仓库的数据查询和分析。然而,由于数据量庞大和复杂的查询需求,HiveSQL查询的性能往往不尽人意。本文针对HiveSQL的性能优化进行深入研究,提出了一系列可行的调优方案,并给出了相应的优化案例和优化前后的SQL代码。通过合理的优化策略和技......
  • 数仓调优实践丨SQL改写消除相关子查询
    本文分享自华为云社区《【调优实践】SQL改写消除相关子查询》,作者:门前一棵葡萄树。一、子查询GaussDB(DWS)根据子查询在SQL语句中的位置把子查询分成了子查询、子链接两种形式。子查询SubQuery:对应于查询解析树中的范围表RangeTblEntry,更通俗一些指的是出现在FROM语句后面的......
  • MYSQL varchar和nvarchar一些学习
    MYSQLvarchar和nvarchar一些学习背景先试用utfmb3的格式进行一下简单验证注意脚本都是一样的.createdatabasezhaobsh;usezhaobsh;createtablezhaobsh(zhaobshvarcharvarchar(30),zhaobshnvarcharnvarchar(30));insertintozhaobshvalues('123abc','1......
  • 大数据从业者必知必会的Hive SQL调优技巧 | 京东云技术团队
    摘要:在大数据领域中,HiveSQL被广泛应用于数据仓库的数据查询和分析。然而,由于数据量庞大和复杂的查询需求,HiveSQL查询的性能往往不尽人意。本文针对HiveSQL的性能优化进行深入研究,提出了一系列可行的调优方案,并给出了相应的优化案例和优化前后的SQL代码。通过合理的优化策略和技......
  • MySQL 查看版本的 5 种方法
    mysql数据库查看版本号SELECTVERSION();linux查看版本号mysqld-Vmysql-version 方法一:登录MySQL每次通过mysql客户端连接服务器之后,都会显示一个欢迎信息,里面包含了服务器的版本:mysql-urootEnterpassword:******WelcometotheMySQLmonitor.Commandsend......
  • 第81讲:清理MySQL Binlog二进制日志的方式
    1.清理Binlog二进制日志的依据Binlog日志非常重要,但是占用的磁盘空间也很大,我们也需要定期的去清理二进制日志,在MySQL数据库中,提供了自动清理Binlog日志的参数,根据指定的天数,保留n天内的Binlog日志,也可以手动人为删除。在手动删除Binlog日志时,要切记不要使用rm-rf直接删除Binlog......
  • MySQL 主从故障排查
    MySQL主从复制是一种常见的数据库架构,用于提高数据库的可用性和性能。但是,在实际应用中,主从故障是难免的。本文详细介绍一套MySQL主从故障排查方案。一确认主从状态首先要确定主从复制的状态,可以通过执行以下命令来检查:1)SHOWMASTERSTATUS;命令用于显示主库的状态信息,包括以下列......
  • 无涯教程-PostgreSQL - Triggers(触发器)
    PostgreSQL触发器是数据库回调函数,当发生指定的数据库事件时,它们会自动执行。Triggers-语法创建trigger的基本语法如下-CREATETRIGGERtrigger_name[BEFORE|AFTER|INSTEADOF]event_nameONtable_name[--Triggerlogicgoeshere....];在这里,event_name可以......