gpt4 book ai didi

c# - 对 SQL 2005 中的程序集使用 WITH PERMISSION_SET = UNSAFE 不好吗?

转载 作者:行者123 更新时间:2023-11-30 12:36:30 25 4
gpt4 key购买 nike

我需要使用 SQLCLR 创建一个使用 .NET 3.5 中的东西的存储过程。如果我不使用 PERMISSION_SET = UNSAFE 我做不到,它会死掉并给我这个错误:

Deploy error SQL01268: .Net SqlClient
Data Provider: Msg 6503, Level 16, State 12, Line 1
Assembly 'system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089.' was not found in the SQL catalog.
An error occurred while the batch was being executed.

于是我找到了这篇文章:

http://weblogs.asp.net/paulomorgado/archive/2009/06/13/playing-with-sql-server-clr-integration-part-iv-deploying-to-sql-server-2005.aspx

最后一行是这样说的:

"Now the DBAs won’t definitely let me use this, but it was fun to build it."

我不确定他是否指的是权限设置为“不安全”。

那么,如果您这样做,是否会出现一些巨大的裂口?

最佳答案

有三种不同的 permission_set 选项限制程序集可以做什么

SAFE - 将程序集限制为托管代码

EXTERNAL_ACCESS - 允许访问文件、网络资源等。

UNSAFE - 不受限制的访问 - 包括非托管代码的执行

MSDN文档给出以下指导

Specifying UNSAFE enables the code in the assembly complete freedom to perform operations in the SQL Server process space that can potentially compromise the robustness of SQL Server. UNSAFE assemblies can also potentially subvert the security system of either SQL Server or the common language runtime. UNSAFE permissions should be granted only to highly trusted assemblies.

如果您的程序集仅使用 .NET 3.5 的功能,我不明白为什么它需要 UNSAFE 访问权限。

您可能正在使用 System.Core 库中不允许的类型或成员之一。 Microsoft 有这些的列表。 Disallowed Types and Members in System.Core.dll

这里有更多信息。 Host Protection Attributes and CLR Integration Programming

关于c# - 对 SQL 2005 中的程序集使用 WITH PERMISSION_SET = UNSAFE 不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com