Если я хочу выполнить этот вид запроса в SQL Server, как я могу сделать тот же запрос с одного сервера, с которым я подключен другому?
Я пытался добавить" [ServerName1]". перед" [DatabaseName1]. [dbo]..." и" [ServerName2]". перед" [DatabaseName2]. [dbo]...", но это, казалось, не работало.
INSERT INTO [DatabaseName1].[dbo].[TableName]
([FieldName])
SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName]
Действительно ли это возможно?
Да, вы должны использовать имя-сервера перед всей остальной частью имени-объекта, например:
myserver.mydatabase.dbo.mytable
Однако сначала вам нужно настроить связанные серверы. Найдите связанные серверы в BOL.
Лучшим способом сделать это будет создание "связанного сервера" между двумя серверами. Для этого вам понадобятся соответствующие разрешения.
Затем нужно просто получить доступ к базам данных, используя имя вашего linkedserver.
Например: [linkedserver].databasename.dbo.tablename
Чтобы создать linkedserver, перейдите к объектам сервера->щелкните правой кнопкой мыши на linked servers->щелкните на 'new linked server'.
Если у вас есть произвольно распределенные запросы , вы можете использовать OPENDATASOURCE . Другой вариант - установка связанного сервера. Не уверен в плюсах и минусах каждого подхода.
INSERT INTO [DatabaseName1].[dbo].[TableName]
SELECT FieldName
FROM OPENDATASOURCE('SQLNCLI',
'Data Source=Server\InstanceName;Integrated Security=SSPI')
.DatabaseName2.dbo.TableName