开发CLR数据库对象:CLR存储过程(下)

日期: 2009-10-22 作者:McGraw-Hill翻译:冯昀晖 来源:TechTarget中国 英文

设置存储过程的安全性   到这个时候,存储过程的代码就完成了,但是由于安全性问题,它不能执行。默认情况下,SQL Server CLR对象只能访问数据库资源,它们不能访问外部资源。在本例“usp_ImportFile”中,存储过程需要访问文件系统,所以默认安全设置需要修改一下。要启用对外部资源的访问,你需要打开项目属性,点击数据库Tab页。

然后在许可级别下拉列表中,你可以把它的值从安全(Safe)修改为外部(External)。更多关于CLR安全选项的信息将会在本章的后续部分加以表述。   部署存储过程   在CLR存储过程源代码编译成程序集以后,你可以添加程序集到数据库,创建CLR存储过程。……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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

相关推荐