如何使用SQL CLR表值函数进行扩展
2007-12-27 15:30:25 来源:WEB开发网核心提示:部署权限:SQL Server 使用权限集在其宿主环境中安全地运行代码,当您在 Visual Studio 中创建数据库项目时,如何使用SQL CLR表值函数进行扩展(6),默认的权限集是 SAFE,这是唯一允许您在不进行其他配置的情况下直接从 Visual Studio 中部署的权限集,有关使用不同的权限集和向 SQ
部署权限:
SQL Server 使用权限集在其宿主环境中安全地运行代码。当您在 Visual Studio 中创建数据库项目时,默认的权限集是 SAFE。这是唯一允许您在不进行其他配置的情况下直接从 Visual Studio 中部署的权限集。若要向您的程序集赋予 SAFE 以外的权限集,必须给您的程序集一个强名称,并执行其他配置步骤,然后才将该程序集部署到数据库。
向 SQL Server 注册程序集时,有三种可能的权限集:SAFE、EXTERNAL ACCESS 和 UNSAFE。
• SAFE 只允许内部计算和从该程序集中的代码进行本地数据访问。
• EXTERNAL ACCESS 允许访问外部系统资源,如文件、网络资源和注册表。
• UNSAFE 允许该程序集中的代码不受限制地运行。
若要使用 SAFE 以外的权限集部署您的程序集,必须遵循一些其他步骤。首先,必须从您要向 SQL Server 注册的程序集创建非对称密钥。其次,使用该密钥来创建登录信息。最后,必须向该登录信息授予相应的权限。以下 Transact-SQL 语句使用上述步骤将 UNSAFE 权限集授予根据前一部分的 tvfEventLogs 示例创建的程序集。
USE master
GO
CREATE ASYMMETRIC KEY EventLogKey FROM EXECUTABLE FILE =
'D:assemblies vfEventLog vfeventlog.dll'
CREATE LOGIN EventLogLogin FROM ASYMMETRIC KEY EventLogKey
GRANT UNSAFE ASSEMBLY TO EventLogLogin
GO
这一操作只需进行一次,不是每次部署该程序集时都要进行。有关使用不同的权限集和向 SQL Server 注册程序集的详细信息,请参阅 CLR 集成代码访问安全性和创建程序集,二者都包含在 SQL Server 2005 联机丛书中。
事件日志报表:
赞助商链接