копировать данные с одного сервера на другой с помощью запроса в мастере импорта/экспорта?

У меня есть одна таблица a на одном сервере БД... и таблица b на другом сервере.

Я хотел бы обновить таблицу b, используя значения в таблице a.

Как указать имя сервера в запросе?

UPDATE SELECT * from [db1].[dbo].StgMGBPData
   SET ASO_Ind = [db2].[dbo].Customer_Names.ASO_Ind,
       Company = [db2].[dbo].Customer_Names.Company,
       Rpt_Cust_ID = [db2].[dbo].Customer_Names.Rpt_Cust_ID
  FROM [db2].[dbo].Customer_Names
  JOIN [db1].[dbo].StgMGBPData ON [db2].[dbo].Customer_Names.Src_Cust_ID = [db1].[dbo].StgMGBPData.CustomerID

person Relativity    schedule 26.03.2011    source источник
comment
Экземпляр Linked Server сделает это очень легко   -  person OMG Ponies    schedule 26.03.2011
comment
мы не можем использовать связанный сервер из-за некоторых ограничений безопасности   -  person Relativity    schedule 26.03.2011
comment
OPENQUERY подойдет тем, кто заботится о безопасности, поскольку не создает объект. Я понимаю, хотя не понимаю, чем отличается сбор данных, для которых потребуется учетная запись в другой системе.   -  person OMG Ponies    schedule 26.03.2011
comment
Спасибо за ваш ответ. Но OpenQuery..openrowset..ничего не разрешено :(. разве мы не можем указать имя имени сервера?   -  person Relativity    schedule 26.03.2011
comment
Для удаленного экземпляра базы данных? Только после настройки экземпляра связанного сервера.   -  person OMG Ponies    schedule 26.03.2011
comment
Я имею в виду... в приведенном выше запросе... можем ли мы указать имя сервера?   -  person Relativity    schedule 26.03.2011
comment
Мой предыдущий комментарий касается именно этого   -  person OMG Ponies    schedule 26.03.2011
comment
Я предполагаю, что вы используете SQL Server, и вы не сказали, что хотите, чтобы это делалось автоматически. Можно ли использовать инструмент импорта и экспорта данных в Management Studio? Это позволяет вам легко загружать данные из одной базы данных в другую.   -  person Stephen Chung    schedule 26.03.2011
comment
Я использовал мастер импорта/экспорта в Management Studio 2008. Но в нем я указал исходный/целевой сервер/базу данных. Но как указать имя сервера базы данных в приведенном выше запросе?   -  person Relativity    schedule 26.03.2011


Ответы (2)


Попробуйте связанный сервер, потому что без связанного сервера вы не можете использовать имя сервера в запросе.

Вы можете использовать sp_addlinkedserver. См. пример здесь:

EXEC sp_addlinkedserver
   @server = 'SERVER',-- your servername
   @provider = 'SQLOLEDB',
   @srvproduct = '',
   @datasrc = 'SERVER', -- your servername
   @catalog = 'NHS_032808' 
   -- your database name which you want to connect

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

select * from SERVER.NHS_032808.dbo.tbl_resident_mst
person KuldipMCA    schedule 26.03.2011
comment
Если вы публикуете образцы кода, XML или данных, пожалуйста, выделите эти строки в текстовом редакторе и нажмите кнопку образцов кода ( { } ) на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! Если вы публикуете сообщения об ошибках, пожалуйста используйте кавычки ( ` ` ), чтобы правильно отформатировать сообщение об ошибке. - person marc_s; 26.03.2011
comment
Спасибо за предложения, я позабочусь об этом в следующий раз - person KuldipMCA; 26.03.2011

Если отсутствие разрешений не позволяет вам использовать Linked Server, но вы можете подключиться к обоим серверам с клиента и иметь необходимые разрешения на выбор для таблицы на сервере A и необходимые разрешения на обновление/вставку для таблицы на сервере B, то вы можете использовать Micorosoft JET в своем клиенте для соединения серверов. Данные с сервера A передаются клиенту, откуда они затем передаются на сервер B. Это относится к общей категории «гетерогенных соединений», которые были одной из основных сильных сторон JET в корпоративном (многосерверном) сценарии. Это соединение требует большей пропускной способности, чем подход Linked Server, но оно выполняет свою работу. Вы создадите в JET ссылки на таблицы на каждом сервере и впоследствии сможете ссылаться на обе таблицы в одном запросе.

person Tim    schedule 26.03.2011