zoukankan      html  css  js  c++  java
  • Sql2008中添加程序集.

    C# 建立数据库 CRL 项目  .Net 3.5

    public partial class MyClr
    {
        [Microsoft.SqlServer.Server.SqlFunction]
        public static SqlBoolean CLRFBitContains(string MyBigIntValue, int Row)
        {
            // 在此处放置代码
            return (new MyBigInt(MyBigIntValue) & MyBigInt.CreateByBitPositon(Convert.ToUInt32(Row))) == MyBigInt.Zero;
        }
    }
    

      数据库初始化:

    exec sp_configure 'show advanced options', '1';
    go
    reconfigure;
    go
    exec sp_configure 'clr enabled', '1'
    go
    reconfigure;
    exec sp_configure 'show advanced options', '1'; 
    
    go
      ALTER DATABASE DB_Name set TRUSTWORTHY on;
    go
    

      数据库添加程序集:

    create assembly MyClr
    from 'R:\MyApp\MyClr\MyClr\bin\Debug\MyClr.dll'
    WITH permission_set = Safe;
    

      数据库添加函数映射

    create function ClrFBitContains
    ( @val as nvarchar(4000) , @RowIndex as  int )
    returns bit
    as 
      external  name MyClr.MyClr.CLRFBitContains  ;
    

      

    TestSql:

     select dbo.ClrFBitContains('F0F',11)

    ======================================================

    原文很丑: http://www.ej38.com/showinfo/sqlserver-140374.html

    参考:http://blog.sina.com.cn/s/blog_6372cc480101h3wu.html

    在sqlserver中如果要使用一个程序集一般有如下注意事项 

    一:打开sqlserver 的CLR支持

     --在Sql Server中执行这段代码可以开启CLR 

    exec sp_configure 'show advanced options''1';
    go
    reconfigure;
    go
    exec sp_configure 'clr enabled''1'
    go
    reconfigure;
    exec sp_configure 'show advanced options''1'

    go

    二:是否需要访问外部资源,如果需要访问外部资源还需要执行下面的

      --打开数据库的TRUSTWORTHY 属性
      ALTER DATABASE DB_Name set TRUSTWORTHY on;

    **在sqlserver中如果要使用一个程序集一般有两种方法 

     方法一:通过T-SQL手动将该程序集放入到SQL Server 其步骤如下

    一:创建将要使用的程序集.dll

       程序上没什么稀奇的,跟普通的ado.net的程序差不多主要就是方法上加了一个属性  (<System.Data.Sql.SqlProcedure(name:="WriteHashedPassword")>)

    二:部署程序集到sqlserver

            a打开sqlserver中clr中相关的支持(方法如上)

            b添加程序集到sqlserver

                                  

                                  CREATE  assembly SqlServerProject1
                                  authorization dbo
                                  from 'E:\test\dotnet\SqlServerProject1\SqlServerProject1\bin\SqlServerProject1.dll'
                                  with permission_set=external_access
                                  go
                    

      c添加存储过程

    --添加存储过程
    CREATE PROCEDURE [dbo].[存储过程名称]
        @from [nvarchar](50), -- 参数列表
        @to [nvarchar](50)
    WITH EXECUTE AS CALLER
    AS
    EXTERNAL NAME [程序集的名称].[StoredProcedures].[存储过程名称]

      d执行存储过程

                  exec CLRSPTest @sql='select * from t2',@path='e:\a\11.txt'

      方法二:通过Visual Studio 2005创建供并部署SQL Server 2005用的Assembly

                          一:打开Visual Studio 2005新建项目类型为数据库的sqlserver项目

                          二:创建所需要的存储过程,函数等

                          三:编译该项目

                          四:部署该项目(此时我们打开sqlserver相应的数据库可以看到存储过程目录及程序集等目录下有相应创建的对象了)

    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    设置linux文件权限,使得同一用户组的可以在文件夹内自由增删文件(夹)
    opencv3.4.8编译opencv-contrib并使用sift
    安装anaconda简单教程
    Arch升级时断开链接恢复
    配置远程连接容器内镜像(映射容器内系统的22端口到宿主机上)
    t-SNE是什么?
    远程连接路由器下的主机
    windows下,本地PyCharm连接远程服务器显示图片
    卷积网络中,关于BatchNorm的训练与加载
    学习Keras
  • 原文地址:https://www.cnblogs.com/newsea/p/2368625.html
Copyright © 2011-2022 走看看