1

我需要编写一个 SQLCLR 函数来访问外部文件。我通过提供trustworthy on给我的数据库来做到这一点。有没有其他方法可以在不给予的情况下访问外部资源trustworthy on?用于 SQLCLR 实施的可信数据库是否存在任何风险?

4

2 回答 2

3

存在风险,但如果您控制数据库中存在的所有代码,则风险很小。如果您对程序集使用 external_access 或 unsafe 权限,则需要将 trustworthy 设置为 on,因为否则 SQL Server 字面上不会信任您的代码,也不会让它离开实例。

这是来自 Microsoft 的链接,详细说明了设置可信赖标志的一些准则:

在 SQL Server 中使用 TRUSTWORTHY 数据库设置的指南

于 2013-03-08T13:39:26.977 回答
2

为避免TRUSTWORTHY ON对数据库访问外部资源,请遵循以下步骤:

USE MASTER;
CREATE ASYMMETRIC KEY '<youKeyName>' FROM EXECUTABLE FILE = '<Your dll file path>';
CREATE LOGIN '<yourUserName>' FROM ASYMMETRIC KEY '<yourKeyName>';
GRANT EXTERNAL ACCESS ASSEMBLY TO '<yourUserName>';
USE '<YOUR DB NAME>';
CREATE ASSEMBLY '<Assembly name>' FROM '<Your dll file path>'
    WITH PERMISSION_SET = EXTERNAL_ACCESS;

试试这个 :)-

于 2013-03-11T08:41:41.393 回答