Если две базы данных on same server
, вы можете выполнить следующие действия:
- Создать таблицу копирования в базе данных ABC.
- Используйте агент SQL Server, чтобы каждый день создавать задание расписания SQL Server для запуска по сценарию:
truncate XXXTable; --clear XXXTable
insert into XXXTable select * from XYZ..XXXTable; --copy
Если две базы данных not on same server
, вы можете выполнить следующие действия:
- Создайте XYZ
dblink
в базе данных ABC.
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 rows affected
CREATE TABLE T2
([val] int, [createDate] datetime)
;
GO
select Convert(date, dateadd(day,-1,getdate()))
GO
| (No column name) |
| :------------------ |
| 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:00
4 | 02/11/2019 00:00:00
дБ <> скрипка здесь