TSQL: Создайте представление, это получает доступ к нескольким базам данных

У меня есть особый случай,

например, в таблице ta в базе данных A, это хранит все продукты, которые я покупаю

table ta(
id,
name,
price
)

в таблице tb в базе данных B, именно весь продукт люди может купить

table tb(
id,
name,
price
....
)

Я могу создать представление в базе данных A перечислять все продукты, которые я не купил?

31
задан p.campbell 26 January 2010 в 22:43
поделиться

3 ответа

Да, можно - синтаксис t-sql такой же, как и при любом другом кроссовом вызове БД (например, в рамках хранимой процедуры).

Для обращения к вашим таблицам во второй БД вам просто нужно:

.

[DatabaseName][Схема].[TableName]

Так что в итоге вы получите что-то вроде

CREATE VIEW [dbo].[YourView]
as
select 
a.ID, 
a.SomeInfo, 
b.SomeOtherInfo
from TableInA a
join DatabaseB.dbo.TableInB b
on -- your join logic goes here

Обратите внимание, что это будет работать только на одном сервере - если ваши базы данных находятся на разных серверах, вам нужно будет создать связанный с ними сервер.

43
ответ дан 27 November 2019 в 22:19
поделиться

Как указывают на другие ответы, вы можете использовать базу данных {linked_server.} Matabase.schema.Object.

Вы также должны знать, что Cross-Database цепочки владения по умолчанию отключен.

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

6
ответ дан 27 November 2019 в 22:19
поделиться

Да, просмотры могут ссылаться на три части именованные объекты:

create view A.dbo.viewname as
select ... from A.dbo.ta as ta
join B.dbo.tb as tb on ta.id = tb.id
where ...

возникнут проблемы с дороги с пересеченными запросами БД из-за консистенции резервного копирования / восстановления, а также отказоустойчивости, но, возможно, Эти проблемы присущи будут разделены данные через DBS.

5
ответ дан 27 November 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: