Мне нужны parameters для requestа нескольких SQL-serverов

В последние месяцы мы перешли на новое программное приложение. Команда миграции (поставщик) оставила неизменную старую базу данных. Они преобразовали некоторые старые данные в базу данных «архив», используя структуру базы данных нового поставщика. (Таким образом, новое программное обеспечение может использоваться для доступа к архивированным данным, тем самым устраняя необходимость в лицензиях для старого программного обеспечения.) С момента преобразования наша компания ввела данные в новую базу данных.

Мне нужно извлечь данные из всех баз данных THREE (на двух serverах SQLserver2005). Я хотел бы использовать request «union», чтобы вытащить все данные и автоматически устранить любые duplicates записей.

Я продолжил «квесты Google» и сделал некоторое чтение. Один из вариантов – это связанные serverы. Другой вариант, с которым я столкнулся, – OPENDATASOURCE.

Мои три базы данных расположены на двух SQL-serverах:

  • «Сервер Box1»: размещает server FAYRMS1 (SQL Server 9.0.3042), одну базу данных старых устаревших данных с именем VSI_DATA
  • «Сервер Box2»: server домов FAYOSSIRMS (SQL Server 9.0.1399), одна database архивных данных, называемая rmsconv И одна database «живых» данных, называемая rms

Я могу «подkeyиться» ко всем трем базам данных по отдельности (validation подлинности Windows). При подkeyении к каждой конкретной базе данных я могу выполнить request, который возвращает нужные мне данные. У меня возникли проблемы, когда я подkeyен к одной базе данных, и я пытаюсь извлечь данные из другой базы данных. (Я попытался создать полностью квалифицированные имена в своем предложении FROM – я получил ошибки. Я requestил sys.servers и обнаружил, что базы данных не связаны.)

Я искал googled и много читал, но я не нашел ответа. Каков syntax для выполнения requestа UNION, который будет извлекать данные из 3 баз данных?

One Solution collect form web for “Мне нужны parameters для requestа нескольких SQL-serverов”

Я бы создал связанные serverы, чтобы сделать это, если вы просто делаете простые выборки. OPENDATASOURCE не требуется. Ваш request будет примерно таким:

SELECT Field1, Field2, Field3, Field4 FROM [Server1].[Database1].[MySchema].[Table1] UNION SELECT Field1, Field2, Field3, Field4 FROM [Server2].[Database2].[MySchema].[Table2] UNION SELECT Field1, Field2, Field3, Field4 FROM [Server3].[Database3].[MySchema].[Table3] 

Предполагая, что у вас есть 3 связанных serverа с именем Server1, Server2 и Server3

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

Создайте связанный server на FAYOSSIRMS, который указывает на FAYRMS1, назовите его как таковой – FAYRMS1.

Тогда ваш request будет выглядеть так:

 SELECT [SomeData] FROM [rms].[dbo].[Table1] UNION SELECT [SomeData] FROM [rmsconv].[dbo].[Table2] UNION SELECT [SomeData] FROM [FAYRMS1].[VSI_DATA].[dbo].[Table3] FROM [rms]. [Dbo]. [Таблица 1] SELECT [SomeData] FROM [rms].[dbo].[Table1] UNION SELECT [SomeData] FROM [rmsconv].[dbo].[Table2] UNION SELECT [SomeData] FROM [FAYRMS1].[VSI_DATA].[dbo].[Table3] FROM [rmsconv]. [Dbo]. [Таблица2] SELECT [SomeData] FROM [rms].[dbo].[Table1] UNION SELECT [SomeData] FROM [rmsconv].[dbo].[Table2] UNION SELECT [SomeData] FROM [FAYRMS1].[VSI_DATA].[dbo].[Table3] 

(если ваша схема – dbo)

РЕДАКТИРОВАТЬ
Если вы застряли с OPENDATASOURCE, то сделайте снимок:

 SELECT [SomeData] FROM [rms].[dbo].[Table1] UNION SELECT [SomeData] FROM [rmsconv].[dbo].[Table2] UNION SELECT [SomeData] FROM OPENDATASOURCE('SQLNCLI','Data Source=FAYRMS1;Integrated Security=SSPI') .VSI_DATA.dbo.Table3 FROM [rms]. [Dbo]. [Таблица 1] SELECT [SomeData] FROM [rms].[dbo].[Table1] UNION SELECT [SomeData] FROM [rmsconv].[dbo].[Table2] UNION SELECT [SomeData] FROM OPENDATASOURCE('SQLNCLI','Data Source=FAYRMS1;Integrated Security=SSPI') .VSI_DATA.dbo.Table3 FROM [rmsconv]. [Dbo]. [Таблица2] SELECT [SomeData] FROM [rms].[dbo].[Table1] UNION SELECT [SomeData] FROM [rmsconv].[dbo].[Table2] UNION SELECT [SomeData] FROM OPENDATASOURCE('SQLNCLI','Data Source=FAYRMS1;Integrated Security=SSPI') .VSI_DATA.dbo.Table3 FROM OPENDATASOURCE («SQLNCLI», «Источник данных = FAYRMS1; Интегрированная security = SSPI») SELECT [SomeData] FROM [rms].[dbo].[Table1] UNION SELECT [SomeData] FROM [rmsconv].[dbo].[Table2] UNION SELECT [SomeData] FROM OPENDATASOURCE('SQLNCLI','Data Source=FAYRMS1;Integrated Security=SSPI') .VSI_DATA.dbo.Table3 

Это откроет connection с FAYRMS1 с использованием собственного клиента SQL и проверки подлинности Windows

  • В чем важность восстановления системных баз данных SQL Server (model, мастер и т. Д.)?
  • Сервер Sql резервирует лучшие практики. Слишком много fileов создано?
  • Должен ли я разделять основную таблицу на 2 миллиона строк?
  • Trigger не работает на serverе LInked. Оба serverа - это SQL Server 2005
  • Транзакционный журнал доставки SQL Server 2005 по 2008 год
  • какой тип транзакции репликации я должен использовать?
  • Как исправить ошибку Datetime Performance Dashboard
  • Как проверить ход DBCC SHRINKFILE?
  • Как удалить резервные копии базы данных через 2 дня или более через службу интеграции SQL Server 2005?
  • службы отчетов 2005 с SQL Server 2008
  • Как настроить / save layout средства просмотра журнала SQL Server?