【发布时间】:2011-09-24 10:35:53
【问题描述】:
我正在处理我的第一个 CLR 程序集,尽管经过大量搜索和反复试验,我已将它安装在我的 SQL Server 上。我去调用它,我得到:
“System.Security.SecurityException:请求'System.Data.SqlClient.SqlClientPermission...类型的权限...”
稍后进行一些研究,发现我应该将其转为 External_Access,但是,这是它尝试连接并运行 SQL 以进行查找的数据库,它正在运行。
根据http://msdn.microsoft.com/en-us/library/ms189566.aspx SAFE 权限为:
“安全”
SAFE 是默认权限集,也是最严格的。由具有 SAFE 权限的程序集运行的代码无法访问外部系统资源,例如文件、网络、环境变量或注册表。 SAFE 代码可以访问本地 SQL Server 数据库中的数据或执行不涉及访问本地数据库外部资源的计算和业务逻辑。
大多数程序集无需访问 SQL Server 之外的资源即可执行计算和数据管理任务。因此,我们推荐 SAFE 作为组装权限集。”
它清楚地表明我应该能够连接到我的本地 SQL 服务器数据库并访问数据。我宁愿保持这个安全,因为我所做的只是快速查找它需要的数据集。
连接字符串如下所示:
Dim sConnectionString As String = "Password=<Password>;Persist Security Info=True;User ID=<User>;Initial Catalog=<Database>;Data Source=<Server>;"
我做错了一定很简单,所以这一切都是为了解决问题。
如何在安全权限上下文中从 CLR 程序集访问本地数据库?
【问题讨论】:
-
我是对的,这很简单。上面的代码是正确的地方。 'Dim sConnectionString As String = "Context Connection=true"' 这使您可以在安全模式下访问本地数据库。有点像要挖出来的虫子。
标签: sql sql-server-2005 assemblies clr