Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Sql server CLR存储过程是自动加密的_Sql Server_Sql Server 2008 R2_Sqlclr - Fatal编程技术网

Sql server CLR存储过程是自动加密的

Sql server CLR存储过程是自动加密的,sql-server,sql-server-2008-r2,sqlclr,Sql Server,Sql Server 2008 R2,Sqlclr,我创建了一个简单的CLR过程来创建一个文件夹。问题是,每次我使用“CREATEPROCEDURE…”语句在SQL Server内部创建过程时,该过程都会自动加密。我没有使用WITH ENCRYPTION子句,而且我也知道它不能用于CLR对象,所以我在这里感到困惑。 这是我的密码: CREATE PROCEDURE CreateFolder(@Path nvarchar(500), @FolderName nvarchar(50), @ReturnCode int output, @ReturnM

我创建了一个简单的CLR过程来创建一个文件夹。问题是,每次我使用“CREATEPROCEDURE…”语句在SQL Server内部创建过程时,该过程都会自动加密。我没有使用WITH ENCRYPTION子句,而且我也知道它不能用于CLR对象,所以我在这里感到困惑。 这是我的密码:

CREATE PROCEDURE CreateFolder(@Path nvarchar(500), @FolderName nvarchar(50), @ReturnCode int output, @ReturnMessage nvarchar(500) output )
WITH EXECUTE AS OWNER 
AS
EXTERNAL NAME MyLibrary.[MyLibrary.StoredProcedures].CreateFolder
GO
我使用的是SQLServer2008R2工作组版

非常感谢您的帮助


谢谢。

它只是显示为加密的,因为您在Management Studio中看不到它的代码吗?您无法编写脚本进行更改或其他操作,这可能就是原因。

是否因为在Management Studio中看不到其代码而将其显示为加密的?您无法编写脚本来更改或执行任何操作,这可能就是为什么SQLCLR对象未加密的原因。事实上,如问题中所述,
WITH ENCRYPTION
选项甚至不适用于SQLCLR对象。它们在SSMS中显示为加密的原因并不是因为看不到它们的定义,而是因为它们一开始甚至没有定义。如果查看sys.sql_modules,可以看到存储过程、函数、触发器、视图等的定义,但它们都不是SQLCLR对象。此外,如果查看目录视图,则有一个名为
的字段具有默认值
,根据链接的MSDN页面:

SQL Server仅维护此目录视图中CLR对象的默认值;因此,对于Transact-SQL对象,此列的值为0。要查看Transact-SQL对象中参数的默认值,请查询sys.SQL\u模块目录视图的定义列,或使用对象定义系统函数


SQLCLR对象的
CREATE
语句(如问题中所示)在每次请求时都从元数据生成。

SQLCLR对象未加密。事实上,如问题中所述,
WITH ENCRYPTION
选项甚至不适用于SQLCLR对象。它们在SSMS中显示为加密的原因并不是因为看不到它们的定义,而是因为它们一开始甚至没有定义。如果查看sys.sql_modules,可以看到存储过程、函数、触发器、视图等的定义,但它们都不是SQLCLR对象。此外,如果查看目录视图,则有一个名为
的字段具有默认值
,根据链接的MSDN页面:

SQL Server仅维护此目录视图中CLR对象的默认值;因此,对于Transact-SQL对象,此列的值为0。要查看Transact-SQL对象中参数的默认值,请查询sys.SQL\u模块目录视图的定义列,或使用对象定义系统函数


SQLCLR对象的
CREATE
语句(如问题中所示)是在每次请求元数据时根据元数据生成的。

您是对的。我无法打开该过程,但我仍然可以通过将其脚本化为“创建”来查看代码谢谢,你说得对。我无法打开该过程,但我仍然可以通过将其脚本化为“创建”来查看代码非常感谢。