我正在尝试查看存储在运行于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)
VIEW DEFINITION
权限。 - Martin Smith