Как выбрать данные таблицы из другой базы данных в SQL Server? - PullRequest
46 голосов
/ 06 апреля 2009

Предположим, у меня есть база данных с именем testdb на тестовом сервере . Также у меня есть база данных с именем proddb на prod server.

Теперь я хочу выбрать данные таблицы из базы данных testdb из базы данных proddb .

Как я могу сделать это в SQL Server?

Кроме того, я могу сделать это, используя ссылку на базу данных в oracle . Но как это сделать в SQL Server ?

Ответы [ 4 ]

57 голосов
/ 06 апреля 2009

Вам нужен 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]
21 голосов
/ 13 декабря 2016

В SQL Server 2012 и выше вам не нужно создавать ссылку. Вы можете выполнить непосредственно

SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET

Я не знаю, работают ли предыдущие версии SQL Server также

11 голосов
/ 04 мая 2011

Я использовал это раньше, чтобы настроить запрос к другому серверу и БД через связанный сервер:

EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='',
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer'

за комментарий выше:

select * from [server].[database].[schema].[table]
*

например, 1007 *

select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus]
5 голосов
/ 06 апреля 2009

Чтобы выполнить межсерверный запрос, проверьте системную хранимую процедуру: sp_addlinkedserver в файлах справки.

Как только сервер подключен, вы можете выполнить запрос к нему.

...