Связанный сервер в View против вызова View удаленно с другого сервера - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть некоторые представления, используемые приложением, которые содержат множество ссылок на один другой сервер, в качестве связанного сервера (я назову локальный сервер «Target» и удаленный сервер «Source») - немного похоже на это :

SELECT
    --[Columns]
FROM
            [Source].[s_db].[dbo].[a_table] A
INNER JOIN  [Source].[s_db].[dbo].[b_table] B   ON A.[Id]  = B.[Id] 
LEFT JOIN   [Source].[s_db].[dbo].[c_table] C   ON B.[Id2] = C.[Id] 
INNER JOIN  [Source].[s_db].[dbo].[d_table] D   ON C.[Id2] = D.[Id]
INNER JOIN  [Source].[s_db].[dbo].[e_table] E   ON D.[Id2] = E.[Id]
---- and so on

Я ненавижу эти взгляды и хочу знать, оправдан ли я или просто предубежден.

Есть ли лучший способ написать это (производительность, аккуратность, способность публиковать sh на другой сервер и т. Д. c)?

До сих пор мои мысли были таковы:

  • Создайте сопутствующую базу данных для источника [Source_Companion] на удаленном компьютере. сервер
  • Повторно создайте представление в базе данных [Source_Companion], ссылаясь на базу данных [Source]
  • Создайте представление в базе данных [Target]
  • Вызовите представление в [ Source] база данных с использованием openquery, с разумно названным связанным сервером. Create view [vw] as select * from openquery([Source],'SELECT * FROM vw') as t

Это похоже на большую работу, и я беспокоюсь, что просто позволяю своим предубеждениям одолеть меня. Как вы думаете, я вижу какую-то выгоду от этих изменений? Может быть, я должен сделать что-то еще, чтобы улучшить эти взгляды, или (не дай бог), я должен просто смириться с этим и двигаться дальше - каково ваше мнение? Не то, чтобы они выступали так плохо, чтобы вызывать комментарии прямо сейчас, но я хочу, чтобы все было как можно лучше и аккуратнее.

1 Ответ

0 голосов
/ 05 февраля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...