设置存储过程的安全性 到这个时候,存储过程的代码就完成了,但是由于安全性问题,它不能执行。默认情况下,SQL Server CLR对象只能访问数据库资源,它们不能访问外部资源。在本例“usp_ImportFile”中,存储过程需要访问文件系统,所以默认安全设置需要修改一下。要启用对外部资源的访问,你需要打开项目属性,点击数据库Tab页。
然后在许可级别下拉列表中,你可以把它的值从安全(Safe)修改为外部(External)。更多关于CLR安全选项的信息将会在本章的后续部分加以表述。 部署存储过程 在CLR存储过程源代码编译成程序集以后,你可以添加程序集到数据库,创建CLR存储过程。……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
设置存储过程的安全性
到这个时候,存储过程的代码就完成了,但是由于安全性问题,它不能执行。默认情况下,SQL Server CLR对象只能访问数据库资源,它们不能访问外部资源。在本例“usp_ImportFile”中,存储过程需要访问文件系统,所以默认安全设置需要修改一下。要启用对外部资源的访问,你需要打开项目属性,点击数据库Tab页。然后在许可级别下拉列表中,你可以把它的值从安全(Safe)修改为外部(External)。更多关于CLR安全选项的信息将会在本章的后续部分加以表述。
部署存储过程
在CLR存储过程源代码编译成程序集以后,你可以添加程序集到数据库,创建CLR存储过程。你可以以两种方式做到这一点。如果你使用Visual Studio 2005创建SQL Server CLR数据库对象,那么你可以交互式地直接从Visual Studio中部署CLR存储过程。要把存储过程部署到SQL Server,在Visual Studio菜单中选择“构建|部署解决方案”选项。
你也可以手工执行部署,请参考前面的章节“创建CLR数据库对象”。要做到这一点,你实际上需要把编译好的动态库复制到一个SQL Server可以访问到的目录或者文件共享位置。然后运行CREATE ASSEMBLY 语句注册该动态库,并把它复制到数据库中。
create assembly usp_ImportFile from 'C:tempusp_ImportFile.dll' WITH PERMISSION_SET = EXTERNAL |
CREATE ASSEMBLY语句把C盘临时目录下的“usp_ImportFile.dll”文件的内容复制到了SQL Server数据库中。WITH PERMISSION SET从句用来指定这个程序集可以访问SQL Server数据库外部的资源。这里需要这么做,因为存储过程要读取外部文件。
CREATE PROCEDURE usp_ImportFile @filename nvarchar(1024), @columnname nvarchar(1024) OUT AS EXTERNAL NAME usp_ImportFile.[usp_ImportFile.StoredProcedures] .usp_ImportFile |
CREATE PROCEDURE语句用来使用CLR程序集创建一个新的SQL Server存储过程。这个CLR存储过程使用两个参数。第一个是输入参数,第二个是输出参数。EXTERNAL NAME从句使用一个三部分组成的名称来指定动态库中的目标方法。该名称的第一部分代表了程序集名称。第二部分表示类名称。如果类被包含在命名空间下(本例中就是这样),命名空间前缀也必须作为类名的一部分,都要放在方括号内。最后名称的第三部分指定了即将执行的方法名。
调用存储过程
在CLR存储过程创建完成之后,它可以像所有T-SQL存储过程那样被调用,请看下面的示例代码:
DECLARE @myColumn ntext EXEC usp_ImportFile 'c:temptestfile.txt' @myColumn |
作者
翻译
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
TT百科:存储过程
存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。