Как выполнять запросы по нескольким базам данных

#sql #sql-server #join

#sql #sql-сервер #Присоединиться

Вопрос:

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

Две базы данных:

 dbo.Serve and dbo.Back
 

Это то, что я делаю:

 SELECT Back.[dbo].Back$.Last_refreshed, dbo.Back.Backup_Name, dbo.Back$.Fle, dbo.Back$.Free_Space_TB, dbo.Backup$.Operational_status, dbo.Serve$.Name,
       dbo.Back$.Rack_Enclosure, dbo.Back$.Server_Name, dbo.Back$.SIZE_TB, x.field, x.piv, dbo.Serve$.SKU,
CASE
           WHEN  dbo.Serve$.SKU like 'F1%' or dbo.Serve$.SKU like 'F2%' or dbo.Server_History$.SKU like 'F3%' or
           dbo.Serve$.SKU like 'FY14%' or dbo.Serve$.SKU like 'F5%' or dbo.Server_History$.SKU like 'F6%' then 'Group1'
           WHEN dbo.Serve$.SKU like 'Gr%' or dbo.Serve$.SKU like 'Fr%'  or dbo.Server_History$.SKU like 'Ex%'
           or dbo.Serve$.SKU like 'Ga%' or dbo.Serve$.SKU like 'Ho%' or dbo.Serve$.SKU like 'Gen%' then 'Group2'
END AS grp
FROM    dbo.Back$
inner join dbo.Serve$  ON dbo.Serve$.Name = dbo.Back$.Server_Name and dbo.Back$.Last_refreshed = dbo.Serve$.Last_refreshed
cross apply (values (dbo.Back$.Free_Space_TB, 'Available'), (dbo.Back$.SIZE_TB - dbo.Back$.Available, 'Used')) AS x(field, piv)
 

Почему это выдаст мне ошибку в этой части?

  SELECT Back.[dbo].Back$.Last_refreshed,
 

поскольку синтаксис кажется правильным

Любая помощь приветствуется.

Комментарии:

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

Ответ №1:

Это обратно.[dbo].Вернуть $.Last_refreshed, не имеет смысла. Вы все равно можете использовать databasename.schemaname.columnname или имя из четырех частей (если вы настроили связанные серверы … instancename.databasename.schemaname.columnname ), Но неясно, что вы имеете в виду с: Back.[dbo].Back$.Last_refreshed

Комментарии:

1. Спасибо, да, я вижу, что мне нужно использовать [Back].[dbo]. (ссылка на базу данных в скобках)