Вы можете захотеть увидеть просмотрщик для изменения его объявления или для понимания, как данные отделяются от базовой таблицы. Вы можете просмотреть информацию об объявлении с помощью запроса следующих просмотрщиков и системных таблиц:
Просмотрщик или системная таблица |
Отображает |
INFORMATION_SCHEMA.TABLES or sysobjects |
Имя просмотрщика |
INFORMATION_SCHEMA.VIEW_TABLE_USAGE or sysdepends |
Имена базовых объектов |
INFORMATION_SCHEMA.VIEWS or syscomments |
Объявление просмотрщика |
INFORMATION_SCHEMA.VIEW_COLUMN_USAGE or syscolumns |
Колонки просмотрщика |
Для просмотра текста просмотрщика, вы можете вызвать и процедуру sp_helptext:
sp_helptext EmployeeView
Для просмотра зависимостей, вы можете также вызвать процедуру sp_depends:
sp_depends EmployeeView
Так как пользователи могут просмотреть объявление просмотрщика, вы можете захотеть спрятать объявление определённых просмотрщиков.
Вы можете зашифровать содержимое таблицы syscomments, которая содержит текст оператора CREATE VIEW с помощью указания опции WITH ENCRIPTION в объявлении просмотрщика.
Прежде чем шифровать просмотрщик, убедитесь, что объявление сохранено в файл. Для расшифровки вы должны будете удалить просмотрщик и создать его заново, или изменить его, используя оригинальный синтаксис.
Следующий пример создаёт зашифрованный просмотрщик:
USE Northwind
GO
CREATE VIEW dbo.[OrderSubtotals]
WITH ENCRYPTION
AS
SELECT OrderID,
SUM(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100)
AS Subtotal
FROM [Order Details]
GROUP BY OrderID
GO
Если вы хотите, чтобы объявление просмотрщика не было видно пользователю, используйте шифрование. Никогда не удаляйте содержимое таблицы syscomments.
Просмотрщик не содержит отдельной копии данных. Вместо этого, он отображает результирующий набор запроса одной или более таблиц. Однако, когда вы изменяете данные в просмотрщике, они изменяются и в базовой таблице.
С некоторыми ограничениями, вы можете вставлять, обновлять и удалять данные из просмотрщика. Обычно для этого просмотрщик должен быть объявлен для одной таблицы и не должен содержать оператора GROUP BY.
Нельзя воздействовать на более чем одну основную таблицу. Вы можете изменять данные просмотрщика, который зависит от двух или более таблиц, но каждое обновление может воздействовать только на одну из них.
Нельзя воздействовать на некоторые колонки. Нельзя воздействовать на колонки, которые являются результатом расчёта.
Вы можете получить ошибку, если попытаетесь воздействовать на колонку, которая не объявлена в просмотрщике. Для примера, если вы получили сообщение об ошибке во время вставки строки в просмотрщик, который содержит колонку не описанную в просмотрщике и не разрешающий нулевые значения.
Здесь мы поговорим о производительности с использованием просмотрщиков, и как они могут позволить оптимизировать производительность с помощью хранения результата комплексного запроса и разделённые данные.
Когда просмотрщик, который объединяет несколько таблиц и вычисляет комплекс вычислений входит в другой просмотрщик, определить источник потери производительности очень сложно. Поэтому лучше создавать отдельные объявления просмотрщиков чем вложенные. В следующем примере, просмотрщик запрашивает набор строк из Другова просмотрщика TotalPurchaseView:
USE Northwind
GO
CREATE VIEW dbo.TopSalesView
AS
SELECT *
FROM dbo.TotalPurchaseView
WHERE Subtotal > 5000
GO
Просмотрщик TopSalesView прячет от нас сложные расчёты запроса используемого в TotalPurchaseView, который объединяет три базовых таблицы.
USE Northwind
GO
CREATE VIEW dbo.TotalPurchaseView
AS
SELECT CompanyName,
SUM(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.