【问题标题】:How do I view the definition for a stored procedure that cannot be modified in SQL Server 2008 R2?如何查看无法在 SQL Server 2008 R2 中修改的存储过程的定义?
【发布时间】: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)

【问题讨论】:

标签: sql-server stored-procedures sql-server-2008-r2


【解决方案1】:

为了做到这一点,您需要拥有所有必要的权限(基本上是 SA),但这里有一个网站,您应该可以关注它来解决问题。

http://sqljunkieshare.com/2012/03/07/decrypting-encrypted-stored-procedures-views-functions-in-sql-server-20052008-r2/

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 2015-06-23
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多