将数据从一台服务器复制到另一台服务器

问题描述 投票:0回答:2

我的源服务器为ABC,目标服务器为XYZ

我需要将某些表从ABC复制到XYZ,但我不需要所有记录,我只需要一天的数据,并且每天需要刷新?

有人可以建议如何做吗?

sql-server
2个回答
1
投票

如果两个数据库为on same server,则可以按照以下步骤操作:

  1. 在ABC数据库中创建副本表。
  2. [每天使用SQL Server代理创建SQL Server计划作业以在以下脚本中运行:
truncate XXXTable; --clear XXXTable
insert into XXXTable select * from XYZ..XXXTable; --copy 

如果您的两个数据库为not on same server,则可以执行以下步骤:

  1. 在ABC数据库中创建XYZ dblink
EXEC master.dbo.sp_addlinkedserver  @server = N'Server ',   @srvproduct=N'SQL Server' ;  
GO  
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'dblinkName',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########';
GO
  1. 在ABC数据库中创建副本表。
  2. [每天使用SQL Server代理创建SQL Server计划作业以在以下脚本中运行:
truncate XXXTable; --clear XXXTable
insert into XXXTable select * from [dblinkname].XYZ..XXXTable; --copy 

编辑

如何只复制一天的数据

您必须添加一个createtime列,并使用sysdate -1 day来过滤一天的数据,例如:

CREATE TABLE T1
  ([val] int, [createDate] datetime)
;

INSERT INTO T1
  ([val], [createDate])
VALUES
  (1, '2019-11-03 00:00:00'),
  (2, '2019-11-03 00:00:00'),
  (3, '2019-11-02 00:00:00'),
  (4, '2019-11-02 00:00:00'),
  (5, '2019-11-01 00:00:00')
;

GO
5行受影响
CREATE TABLE T2
  ([val] int, [createDate] datetime)
;
GO
select Convert(date, dateadd(day,-1,getdate()))  
GO
| (无列名)|| :------------------ || 02/11/2019 00:00:00 |
insert into T2
select * from T1
where createDate = Convert(date, dateadd(day,-1,getdate()))  
GO
select * from T2
GO
val | createDate-:| :------------------3 | 02/11/2019 00:00:004 | 02/11/2019 00:00:00

db <>小提琴here


0
投票

除了@IT WeiHan的答案,您不必制作链接服务器,也可以通过导入数据向导来完成数据传输:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.