实现受管理代码功能的步骤
1.创建一个c#项目(类库),创建一个类,声明一个静态的方法
  并实现一个功能,如:对文件进行写入的功能
2.编译该项目,生成.dll文件(其它的项目生成的是.exe文件)
3.在数据库查询编辑窗口编写如下代码:
  a. 创建数据库程序集对象
      create assembly assembly_name from 程序集文件的全路径
      with permission_set=safe|external_access|unsafe
  b.创建存储过程
      create procedure proc_name as external name
      assembly_name.[类所在的程序集名称.类名].方法名
  c.执存储过程
      exec proc_name出现的问题:
 1.针对程序集 'library1' 的 CREATE ASSEMBLY 失败,因为程序集 'library1' 未获授权(PERMISSION_SET = EXTERNAL_ACCESS)。 
    当符合以下两个条件之一时,将对程序集授权: 数据库所有者(DBO)具有 EXTERNAL ACCESS ASSEMBLY 权限,而且数据库的     TRUSTWORTHY 属性处于打开状态;或者,程序集签名时所使用的证书或非对称密钥所对应的登录名具有 
    EXTERNAL ACCESS ASSEMBLY 权限。
  原因:
   a. 登录用户不具备EXTERNAL ACCESS ASSEMBLY权限
   b. 数据库的信任模式没有打开
   c.  程序集文件可能有多个版本(本机上装了两个vs)
  解决方法:
   a.修改登录用户的权限,使该用户具有EXTERNAL ACCESS ASSEMBLY
   b.打开数据库的信任模式
     ALTER DATABASE DATABASENAME SET TRUSTWORTHY ON
   c.打开控制面板->添加或删除组件->卸载vs其中的一个版本(如果只有一个vs版本就不用考虑)
2.禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项。
   原因:
        数据库未启动对.NET Framework的CLR的支持
   解决方法:启用数据库CLR支持
        exec sp_configure clr_enabled,1;
        go
        reconfigure;
        go案例:
1.数据库部分:
ALTER DATABASE testdb SET TRUSTWORTHY on create assembly ConvertFileWriteAssembly From
'E:\library1\library1\bin\Debug\library1.dll'
 with permission_set = external_access create procedure clrproc as external name
ConvertFileWriteAssembly.[library1.Class1].WriteMsg exec sp_configure clr_enabled,0;
go
reconfigure;
go exec clrproc2.c#代码部分:
namespace library1
{
     public class Class1
     {
         public static void WriteMsg()
         {
             FileStream f = new FileStream(@"e:\a.txt", FileMode.OpenOrCreate);
            StreamWriter write = new StreamWriter(f);
             write.WriteLine("Hello world!");
             write.Close();
             f.Close();
         }
     }
}