Копировать данные с одного сервера на другой сервер - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть исходный сервер как ABC и целевой сервер как XYZ

Мне нужно скопировать некоторые таблицы из ABC в XYZ, но мне не нужны все записи, мне просто нужны данные за один деньа мне нужно каждый день обновляться?

Может кто-нибудь подсказать как это сделать?

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Если две базы данных 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. Создайте 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

дБ <> скрипка здесь

0 голосов
/ 03 ноября 2019

В дополнение к ответу @IT WeiHan вам не нужно создавать связанный сервер, передача данных может быть выполнена мастером импорта данных:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...