Вставить данные от одного сервера до другого?

Если я хочу выполнить этот вид запроса в SQL Server, как я могу сделать тот же запрос с одного сервера, с которым я подключен другому?

Я пытался добавить" [ServerName1]". перед" [DatabaseName1]. [dbo]..." и" [ServerName2]". перед" [DatabaseName2]. [dbo]...", но это, казалось, не работало.

INSERT INTO [DatabaseName1].[dbo].[TableName]
           ([FieldName])
     SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName]

Действительно ли это возможно?

7
задан OMG Ponies 19 July 2010 в 21:55
поделиться

3 ответа

Да, вы должны использовать имя-сервера перед всей остальной частью имени-объекта, например:

myserver.mydatabase.dbo.mytable

Однако сначала вам нужно настроить связанные серверы. Найдите связанные серверы в BOL.

10
ответ дан 6 December 2019 в 09:17
поделиться

Лучшим способом сделать это будет создание "связанного сервера" между двумя серверами. Для этого вам понадобятся соответствующие разрешения.

Затем нужно просто получить доступ к базам данных, используя имя вашего linkedserver.

Например: [linkedserver].databasename.dbo.tablename

Чтобы создать linkedserver, перейдите к объектам сервера->щелкните правой кнопкой мыши на linked servers->щелкните на 'new linked server'.

2
ответ дан 6 December 2019 в 09:17
поделиться

Если у вас есть произвольно распределенные запросы , вы можете использовать OPENDATASOURCE . Другой вариант - установка связанного сервера. Не уверен в плюсах и минусах каждого подхода.

INSERT INTO [DatabaseName1].[dbo].[TableName]
SELECT FieldName
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=Server\InstanceName;Integrated Security=SSPI')
    .DatabaseName2.dbo.TableName
8
ответ дан 6 December 2019 в 09:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: