CREATE VLEW和ALTER VIEW命令中的ENCRYPTION OPTION允许我们加密视图的T-SQL。一旦加密,就不能再通过sys.sql_modules系统目录视图查看视图定义。在后端使用SQL Servert的软件厂商经常加密它们的视图或存储过程,目的是防止客户端或竞争对手篡改或进行逆向工程。如果使用加密,请确保保存了原始的、未加密的定义。
USE AdventureWorks
GO
CREATE VIEW dbo.v_Product_TopTenListPrice
WITH ENCRYPTION
AS
SELECT TOP 10
p.name,
p.ProductNumber,
p.ListPrice
FROM Production.Product p
ORDER BY p.ListPrice DESC
GO
然后,通过查询sys.sql_modules系统日录视图来查看新视图的T-SQL定义:
SELECT definition
FROM sys.sql_modules
WHERE object_id=OBJECT_ID('v_Product_TopTenLIstPrice')
使用WITH ENCRYPTION选项创建了一个新的视图,请确保在安全的地方保存了源代码,或使用了诸如Visual SourceSafe的版本控制程序。通常,如果必须加密视图定义,应该在部署前进行。