Запрос к двум таблицам в разных базах данных на одном сервере - PullRequest
9 голосов
/ 04 августа 2011

Мне нужно запросить две таблицы в двух разных базах данных на одной и той же SQL Server.В одной таблице мне нужно получить все строки (простой выбор), а в другой - выбор, но где идентификатор соответствует параметру в моем сохраненном процессе.

Я пытался сделать это, но получил ошибку

Не удалось связать идентификатор из нескольких частей.

Как я могу это сделать?

ЗАПРОС:

  SELECT QUALITY_CENTER, POSTCODE_ID, (SELECT   [QCID]   
  FROM [Website_Interactive].[dbo].[IIPCentre_UserObject]
  WHere LoginID = @loginID)
  FROM IIP_QC_LIST

Ответы [ 4 ]

15 голосов
/ 04 августа 2011

Звучит так, будто вы что-то опечатали.Вы можете запросить таблицу в другой БД, используя следующий метод:

SELECT tn.ID, tn.NAME
FROM [Database Name].[Schema].[TableName] as tn

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

Если вы покажете нам свой запрос и дадите нам имена БД, я могу дать более полный ответ.

ОБНОВЛЕНИЕ:

Вы уверены, что правильно пишете "Центр"?Я заметил, что вы написали «центр» в IIPCentre_UserObject, что, я думаю, может быть правильным для Великобритании (?), Но вы написали «центр» для QUALITY_CENTER.Я бы предположил, что это так или иначе написано в вашей среде.

7 голосов
/ 04 августа 2011

Вы можете легко сделать это, предоставив FQN (полное имя) для объекта SQL (в данном случае для вашей таблицы SQL).Синтаксис FQN для таблицы таков:

[database-name].[schema-name].[table-name]

Пример:

SELECT a, b, c FROM Database1.Schema1.Table1
UNION 
SELECT a, b, c FROM Database2.Schema2.Table2

Где Database1 - ваша первая база данных, а Database2 - вторая.

1 голос
/ 04 августа 2011

Можно / просто выбрать из разных баз данных на одном сервере. Вам нужно использовать полное имя, т. Е.

SELECT * from database.schema.table 

Например

SELECT * FROM northwind.dbo.orders where id = @id
0 голосов
/ 13 сентября 2017

Вы можете запросить две отдельные базы данных, если таблица из 1 базы данных совпадает со значением другой таблицы

, например:

SELECT * FROM DB1.dbo.MyTable db1,DB2.dbo.MyTable db2 where db1.table1=db2.table1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...