Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 什么是SQL Server 2005中带有挂锁图标的存储过程?_Stored Procedures_Sql Server 2005_Locking - Fatal编程技术网

Stored procedures 什么是SQL Server 2005中带有挂锁图标的存储过程?

Stored procedures 什么是SQL Server 2005中带有挂锁图标的存储过程?,stored-procedures,sql-server-2005,locking,Stored Procedures,Sql Server 2005,Locking,我在管理的一个数据库中看到一些存储过程具有常规存储过程图标,但旁边有一个小挂锁。 我看到的区别是我无法“修改”它们,如果我尝试编写它们的脚本,它会说: 文本是加密的 这是因为这些是CLR存储过程吗? 它们是“常规”程序,但以某种方式进行加密/保护吗? 有没有办法获取这些代码(T-SQL或IL)?挂锁只是意味着它们是加密的-与它们是CLR无关。无论源代码是CLR/T-SQL,都无法查看它们。挂锁意味着存储过程已使用WITH ENCRYPTION提示进行了加密(有关详细信息,请参阅BOL中的CREA

我在管理的一个数据库中看到一些存储过程具有常规存储过程图标,但旁边有一个小挂锁。
我看到的区别是我无法“修改”它们,如果我尝试编写它们的脚本,它会说:

文本是加密的

这是因为这些是CLR存储过程吗?
它们是“常规”程序,但以某种方式进行加密/保护吗?

有没有办法获取这些代码(T-SQL或IL)?

挂锁只是意味着它们是加密的-与它们是CLR无关。无论源代码是CLR/T-SQL,都无法查看它们。

挂锁意味着存储过程已使用
WITH ENCRYPTION
提示进行了加密(有关详细信息,请参阅BOL中的
CREATE PROC

这并不意味着它是一个CLR存储过程

SQL Server杂志上的一篇文章,介绍如何对使用
WITH ENCRYPTION
提示加密的对象进行解密

还有一些第三方工具也可以做同样的事情——本机存储过程加密并不意味着是一种强大的加密级别


Edit:'是另一个,但我没有在SQL Server 2005或更高版本上对其进行测试。

以及加密,这也意味着您没有查看定义的权限,因此无法查看存储过程的代码。

这些是使用
with ENCRYPTION
选项创建的存储过程(有关详细信息,请参阅)。这意味着您看不到存储过程的代码

对这样的存储过程进行解密是可能的,但由于加密背后的思想是无法做到这一点,这并不简单——绝对不要在生产服务器上做到这一点!如果确实需要查看存储过程文本,那么最好先询问编写未加密版本的人员(至少可以尝试)


加密存储过程的一个副作用是,无法查看这些对象的执行计划(通过DMV缓存的执行计划或通过分析捕获的执行计划)

您正在查看的SP是CLR类型的SP。我刚刚完成了一个成功的POC。 您只需浏览以下链接:


当我创建CLR过程时,它有挂锁图标