Как выбрать данные таблицы из другой базы данных в SQL Server?
Предположим, у меня есть база данных с именем testdb на сервере test.
Также у меня есть база данных с именем proddb на сервере prod.
Теперь я хочу выбрать данные таблицы testdb из базы данных proddb.
Как это сделать в SQL Server?
Кроме того, я могу сделать это, используя ссылку базы данных в oracle. Но как это сделать в SQL Server?
Ответы
Ответ 1
Вам нужен sp_addlinkedserver()
http://msdn.microsoft.com/en-us/library/ms190479.aspx
Пример:
exec sp_addlinkedserver @server = 'test'
затем
select * from [server].[database].[schema].[table]
В вашем примере:
select * from [test].[testdb].[dbo].[table]
Ответ 2
Я использовал это раньше, чтобы настроить запрос на другой сервер и db через связанный сервер:
EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='',
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer'
в комментарии выше:
select * from [server].[database].[schema].[table]
например.
select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus]
Ответ 3
Чтобы выполнить кросс-серверный запрос, проверьте системную хранимую процедуру: sp_addlinkedserver в файлах справки.
После соединения сервера вы можете запустить запрос против него.
Ответ 4
В SQL Server 2012 и выше вам не нужно создавать ссылку. Вы можете выполнить непосредственно
SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET
Я не знаю, работают ли предыдущие версии SQL Server