估计是那个控件与64位系统存在兼容性问题,建议你找到这个控件'MSScriptControl.ScriptControl'更高的版本,注册它后再试用试试看.我觉得你方法应该没问题,是版本问题

解决方案 »

  1.   

    检查服务器注册表中是否有如下键值:
     HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MSScriptControl.ScriptControl若无,下载安装组件: Windows Script Control
    地址 http://www.microsoft.com/en-us/download/details.aspx?id=1949
      

  2.   

    有注册的,因为我同一个系统同时安装了SQL Server 2000和SQL Server 2008 R2
    同样的语句在SQL Server 2000可以正常运行返回值,但到SQL Server 2008就不行了
    网上搜索了一下,好似系由于SQL Server 2008 X64造成的原因,说COM只能是exe程序,不会吧
    有哪位有同样的环境的测试一下看看是否能成功返回ID值啊,这个功能我是必须要实现的
    不然还有其他办法能够实现在SQL里面执行动态代码吗???
      

  3.   

    MSScriptControl.ScriptControl 有X64的版本吗???
      

  4.   

    1.检查SQL2000服务启动帐号与SQL2008R2启动帐号是否一致,推荐用local system.
    2.确认SQL2008R2系统选项Ole Automation Procedures是否为1.sp_configure 'Ole Automation Procedures'
      

  5.   

    我运行下面的:sp_configure 'Ole Automation Procedures',1
    go 
    reconfigure
    go
    declare @intObject int
    declare @intReturn int
    declare @source varchar(255)
    declare @description  varchar(255)exec @intReturn=master.dbo.[sp_oaCreate] 'MSScriptControl.ScriptControl',@intObject out
    --exec master.dbo.[sp_oasetproperty] @intObject,'Language','vbscript'
    EXEC master.dbo.[sp_OAGetErrorInfo] NULL, @source OUT, @description OUTselect @intReturn,@intObject,@source,@description
    也是没有注册类:
    (无列名) (无列名) (无列名) (无列名)
    -2147221164 NULL ODSOLE Extended Procedure  没有注册类
      

  6.   

    上面的是win 7的64位,之前在xp上试过到是可以的
      

  7.   

    1.检查SQL2000服务启动帐号与SQL2008R2启动帐号是否一致,推荐用local system.
    2.确认SQL2008R2系统选项Ole Automation Procedures是否为1.sp_configure 'Ole Automation Procedures'
    已经是打开这个开关的了,网上搜索了一天,看来是没有解决办法了,MSScriptControl.ScriptControl是没办法在X64位下运行的除非你用一个X64的程序重新打包改控件
    如果不能使用,那么在SQL Server 2008 R2有什么替代办法替代MSScriptControl.ScriptControl呢
      

  8.   

    有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!
    因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
    没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
    含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
    比这个空间低很多
      

  9.   

    有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!
    因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
    没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
    含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
    比这个空间低很多哦 ,你的clr函数是标量函数吗,就是只返回一个值的
      

  10.   

    还有就是,你的对应到clr程序集的函数的返回值类型,和传入参数类型,都是哪些数据类型呢
      

  11.   

    可以试试用clr调用。net方法
    参考
    http://www.poluoluo.com/jzxy/200801/9462.html
      

  12.   

    CLR我会,但就算使用CLR编写自定义函数,也找不到比MSScriptControl.ScriptControl效率更高的办法
    .NET到了3.5后也没有提供效率高的动态执行公式的类库,1.1时代有个vsa命名空间下的类可以使用
    但到了2.0以后已不建议使用了,网上资料都是使用动态编译的办法,但这样效率太低了,我是要做成函数
    嵌入到SQL语句执行的,动态编译效率根本没办法满足需求的
      

  13.   

    我就是使用MSScriptControl.ScriptControl做成一个标量函数传入一个字符串然后返回这个字符串的执行结果,用过java的Eval()函数就知道了,例如Eval('1+2*3+Sin(0.8)/Cos(0.3)')
    公式可能很复杂的
      

  14.   

    有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!
    因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
    没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
    含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
    比这个空间低很多你写个clr程序集,应该也可以的
      

  15.   

    我就是使用MSScriptControl.ScriptControl做成一个标量函数传入一个字符串然后返回这个字符串的执行结果,用过java的Eval()函数就知道了,例如Eval('1+2*3+Sin(0.8)/Cos(0.3)')
    公式可能很复杂的是这样吗:
    select 1+2*3+Sin(0.8)/Cos(0.3)
    /*
    7.75089363702218
    */
      

  16.   

    我就是使用MSScriptControl.ScriptControl做成一个标量函数传入一个字符串然后返回这个字符串的执行结果,用过java的Eval()函数就知道了,例如Eval('1+2*3+Sin(0.8)/Cos(0.3)')
    公式可能很复杂的是这样吗:
    select 1+2*3+Sin(0.8)/Cos(0.3)
    /*
    7.75089363702218
    */
    不能用SQL执行的,我的公式不符合T-SQL语法的,这只是一个特例而已
      

  17.   

    有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!
    因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
    没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
    含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
    比这个空间低很多你写个clr程序集,应该也可以的
    .NET能动态解析公式的有什么现成的类库吗?好像没有吧
    自己写对于复杂的含有函数的又有困难
    动态编译虽然能解决问题,但效率太低没法用
    如果没办法,只能要求公式的语法符合T-SQL写个CLR函数了
      

  18.   

    给你找了两个,你看看能用吗:http://download.csdn.net/detail/ddrvos/3546118http://download.csdn.net/detail/llllllssssss12345678/4864859
      

  19.   

    我认为是你的MSScriptControl.ScriptControl控件在SQL Server 2008 R2下面存在兼容性问题。
      

  20.   

    MSScriptControl在x64位下有问题,也在找升级版
      

  21.   


    我找遍整个网络都没找到,最后还是自己写个CLR函数先解决问题吧
    好在该功能不是经常用,慢点没所谓