1.加密存储过程
存储过程的T-SQL定义能在数据库中实现内容加密,这样就不能读取过程的定义。在后端使用SQL Server的软件开发商通常加密存储过程来防止客户端或竞争对手的篡改或逆向工程。如果你使用了加密,请确保保存了原始的T-SQL定义,因为以后不能再轻易地解密它(合法并且可靠的)。而且应该只在正式把它部署到生产环境之前才进行加密。
要加密存储过程,可以在新存储过程的名字后面指定WITH ENCRYPTION:
USE AdventureWorks
GO
CREATE PROC dbo.usp_SEL_EmployeePayHistory
WITH ENCRYPTION
AS
SELECT EmployeeID,RateChangeDate,Rate,Payfrequency,ModifiedDate
FROM HumanResources.EmployeePayHistory
GO
一旦创建了WITH ENCRYPTION,就不能再看到过程的文本定义:
--查看过程的文本
EXEC sp_helptext usp_SEL_EmployeePayHistory
加密能使用CREATE PROCEBURE或ALTER PROCEDURE来定义,但是要确保保存了你的源代码,因为既有的已加密文本不能被轻易解密。
2.使用EXECUTE AS 来指定过程的安全上下文
WITH EXECUTE AS关键字允许你指定存储过程执行所在的安全上下文,覆盖存储过程调用者的默认安全。在这里,安全上下文是指用户执行存储过程的权限。
可以在以下几个权限下执行存储过程:
- 调用者的安全上下文:
- 过程的编写者或最终修改者:
- 指定的登录名&#x