【发布时间】:2013-07-02 17:59:00
【问题描述】:
我正在尝试查看驻留在 SQL Server 2008 R2 中运行的数据库中的存储过程。我在[dbName] > Programmability > Stored Procedures > dbo.[sprocName]下找到了存储过程,但是它旁边有一个小挂锁图标,当我右键单击它进行修改时,修改选项是灰色的。
然后我尝试通过像这样查询数据库中的对象来访问定义:
use [dbName];
select * from sys.sql_modules
where definition LIKE '%[sprocName]%'
这不会产生所需存储过程的定义,但查询确实适用于我已经可以修改的存储过程。
如何在不获得修改权限的情况下查看此存储过程的定义?
更新
看起来 Sproc 实际上是根据此错误消息加密的:
TITLE: Microsoft SQL Server Management Studio
------------------------------
Script failed for StoredProcedure 'dbo.[sprocName]'. (Microsoft.SqlServer.Smo)
------------------------------
ADDITIONAL INFORMATION:
Property TextHeader is not available for StoredProcedure '[dbo].[sprocName]'. This property may not exist for this object, or may not be retrievable due to insufficient access rights.
The text is encrypted. (Microsoft.SqlServer.Smo)
【问题讨论】:
-
@MartinSmith - 虽然我承认您指定的问题中有相关信息,但我的问题与该用户的不同。
-
@quakkels - 是的,对不起,我同意。要查看定义而不在 SQL Server 中获得修改权限,您需要被授予
VIEW DEFINITION权限。 -
在尝试了@liebs19 发布的链接中的一些解决方案后,我可以根据收到的错误消息确认 Sproc 已加密。
标签: sql-server stored-procedures sql-server-2008-r2