Кросс-серверный SQL - PullRequest
       32

Кросс-серверный SQL

30 голосов
/ 16 сентября 2008

Я хочу перенести данные из базы данных одного сервера в базу данных другого сервера. Обе базы данных находятся на разных серверах mssql 2005. Репликация, вероятно, не вариант, так как база данных назначения создается с нуля на [интервале времени].

Предпочтительно, я бы сделал что-то вроде

insert *
from db1/table1
into db2/table2
where rule1 = true

Очевидно, что учетные данные подключения были бы в этом сценарии.

Ответы [ 8 ]

34 голосов
/ 16 сентября 2008

Я думаю, что вы хотите создать связанный сервер согласно этой статье msdn. Затем вы должны выбрать имя объекта из 4 частей, например:

Select * From ServerName.DbName.SchemaName.TableName
8 голосов
/ 06 сентября 2013

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

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO


SELECT  *
FROM    OPENDATASOURCE('SQLOLEDB',
                   'Data Source=<Ip Of Your Server>;
                    User ID=<SQL User Name>;Password=<SQL password>').<DataBase name>.<SchemaName>.<Table Or View Name>

Go
1 голос
/ 17 сентября 2008

Вы можете пойти по маршруту связанного сервера.

вы просто не можете использовать select *, вы должны вставить его в select.

Я бы избегал репликации, если у вас нет опыта работы с ней, так как это может быть трудно исправить, если она сломается, и может быть склонна к другим проблемам, если не будет должным образом управляться.

Сохраняйте это простым, особенно если базы данных небольшие.

1 голос
/ 16 сентября 2008

Ну, я не согласен с вашим комментарием по репликации. Вы можете запустить репликацию, создав базу данных с нуля, и вы можете контролировать, будут ли обновления выполняться путем обновления доступной клиентской базы данных или просто воссоздания базы данных.

Автоматическая репликация облегчит вашу работу благодаря автоматическому управлению ключами и связями.

Я думаю, что проще всего начать репликацию моментальных снимков с помощью MSSQL Server Studio, получить соответствующие сценарии T-SQL (т.е. соответствующие инструкции T-SQL для публикации и подписки) и записать эти сценарии как часть задание в списке заданий агента SQL или задание репликации в папке репликаций.

1 голос
/ 16 сентября 2008

Будете ли вы переносить весь контент базы данных с одного сервера на другой или просто некоторые данные из пары таблиц?

Для обоих вариантов SSIS выполнит эту работу, особенно если вы планируете перевод на регулярной основе.

Если вы просто хотите скопировать некоторые данные из 1 или 2 таблиц и предпочитаете делать это с помощью TSQL в SQL Management Studio, тогда вы можете использовать связанный сервер, как рекомендует pelser

  1. Настройка исходного сервера базы данных в качестве связанного сервера
  2. Используйте следующий синтаксис для доступа к данным
select columnName1, columnName2, etc from serverName.databaseName.schemaName.tableName
1 голос
/ 16 сентября 2008

Являются ли службы интеграции SQL Server (SSIS) одним из вариантов? Если это так, я бы использовал это.

0 голосов
/ 22 сентября 2016
CREATE VIEW newR1 
AS
SELECT * from OPENQUERY ([INSTANCE_NAME], 'select * from DbName.SchemaName.TableName')
0 голосов
/ 16 сентября 2008

Можете ли вы использовать Службы преобразования данных для выполнения этой работы? Это обеспечивает всевозможные инструменты для выполнения подобных задач.

Вы можете загрузить пакет функций SQL Server 2005 с веб-сайта Microsoft. здесь

...