0

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

Возможно ли это? Если да: как я могу это сделать?

Я не могу найти образец.

Я использую SQL Server 2008 R2

+5

Я думаю, что это может работать со связанными серверами. См. Здесь: http://msdn.microsoft.com/en-us/library/ms190479.aspx – sofl

+0

возможный дубликат [SQL Server Linked Server Example Query] (http://stackoverflow.com/questions/4091960/sql-server -link-server-example-query) и http://stackoverflow.com/questions/10402197/how-to-create-the-linked-server-for-sql-server-2008-where-we-have-the- база-F –

ответ

4

Вот пример ...

соединение с первым сервером, и запустить этот скрипт

CREATE DATABASE [DatabaseA]; 
GO 
CREATE TABLE [DatabaseA].[dbo].[TableA] (Id int, ValueA varchar(10)); 
INSERT INTO [DatabaseA].[dbo].[TableA] VALUES(1,'a'),(2,'b'),(3,'c'); 

Затем подключить ко второму серверу, и запустите это

CREATE DATABASE [DatabaseB]; 
GO 
CREATE TABLE [DatabaseB].dbo.[TableB] (Id int, ValueB varchar(10)); 
INSERT INTO [DatabaseB].dbo.[TableB] VALUES(1,'A'),(2,'B'),(3,'B'); 

В связи с первым сервером мы создаем ссылку на е второй, как этот

EXEC master.dbo.sp_addlinkedserver 
    @server = N'LINKTOB' 
    ,@srvproduct=N'B' 
    ,@provider=N'SQLOLEDB' 
    ,@datasrc=N'<NAME OF SERVER CONTAINING DatabaseB>'; 

Обратите внимание, что вам нужно изменить значение @datasrc в соответствии с вашей средой.

Теперь мы можем на первом сервере запустить запрос, как это, используя данные из двух отдельных серверов в одном запросе

SELECT 
    a.Id 
    ,a.ValueA 
    ,b.ValueB 
FROM 
    [DatabaseA].[dbo].[TableA] AS a 
    INNER JOIN [LINKTOB].[DatabaseB].[dbo].[TableB] AS b ON a.Id = b.Id 

Результат должен выглядеть следующим образом

Screenshot of query result

Если оба сервера находятся в одном домене с одинаковыми настройками безопасности, все должно работать без каких-либо дальнейших изменений. Если нет, посмотрите Management Studio под Объекты сервера - Связанные серверы - LINKTOB. Открытые свойства для LINKTOB и посмотрите на Безопасность -tab.

1

Ответ QQ должен быть вашим первым вариантом.

Для специальных условий подключения MSSQL к MSSQL OpenDataSource - хороший вариант. Например, для запроса внешней таблицы:

SELECT * 
FROM OPENDATASOURCE('SQLNCLI', 
'Data Source=London\Payroll;Integrated Security=SSPI') 
.AdventureWorks2012.HumanResources.Employee 
Смежные вопросы