sql-server - 将数据从一台服务器复制到另一台服务器
问题描述
我的源服务器为 ABC,目标服务器为 XYZ
我需要将一些表从 ABC 复制到 XYZ,但我不需要所有记录,我只需要一天的数据,我需要每天刷新?
有人可以建议如何做到这一点吗?
解决方案
如果这两个数据库是on same server
您可以按照以下步骤操作:
- 在 ABC 数据库中创建副本表。
- 每天使用 SQL Server 代理创建 SQL Server 计划作业以运行以下脚本:
truncate XXXTable; --clear XXXTable
insert into XXXTable select * from XYZ..XXXTable; --copy
如果您的两个数据库是not on same server
您可以按照以下步骤操作:
dblink
在 ABC 数据库中创建一个 XYZ 。
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
- 在 ABC 数据库中创建副本表。
- 每天使用 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
| (无列名) | | :----------------- | | 2019 年 2 月 11 日 00:00:00 |
insert into T2 select * from T1 where createDate = Convert(date, dateadd(day,-1,getdate())) GO
select * from T2 GO
值 | 创建日期 --: | :----------------- 3 | 2019 年 2 月 11 日 00:00:00 4 | 2019 年 2 月 11 日 00:00:00
db<>在这里摆弄
推荐阅读
- c - C编程中argv[1]与字符串的比较
- javascript - 当我尝试单击我的控件时,为什么我的控制台不会记录“0”?
- javascript - 如何通过一个对象来修改一个类
- python - 如何过滤 Pandas DataFrame 每行前 15%?
- python - 通过将快照 ID 或实例名称作为保留日期的参数来寻找删除 AWS 快照的 Python 脚本
- node.js - 过滤器搜索得到 req is not defined 的错误信息
- powershell - 减少 PowerShell 脚本的内存消耗
- r - R - 传单 - highcharter 工具提示(标签)
- node.js - Google App Engine (Flex) 使用 express 服务器和单独的 socket.io 服务器
- c# - Wpf InvalidCastException:无法将列表转换为单个对象