我需要编写一个 SQLCLR 函数来访问外部文件。我通过提供trustworthy on
给我的数据库来做到这一点。有没有其他方法可以在不给予的情况下访问外部资源trustworthy on
?用于 SQLCLR 实施的可信数据库是否存在任何风险?
问问题
1599 次
2 回答
3
存在风险,但如果您控制数据库中存在的所有代码,则风险很小。如果您对程序集使用 external_access 或 unsafe 权限,则需要将 trustworthy 设置为 on,因为否则 SQL Server 字面上不会信任您的代码,也不会让它离开实例。
这是来自 Microsoft 的链接,详细说明了设置可信赖标志的一些准则:
于 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 回答