SQL Server 2008 R2 调用MSScriptControl.ScriptControl失败 估计是那个控件与64位系统存在兼容性问题,建议你找到这个控件'MSScriptControl.ScriptControl'更高的版本,注册它后再试用试试看.我觉得你方法应该没问题,是版本问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 检查服务器注册表中是否有如下键值: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MSScriptControl.ScriptControl若无,下载安装组件: Windows Script Control地址 http://www.microsoft.com/en-us/download/details.aspx?id=1949 有注册的,因为我同一个系统同时安装了SQL Server 2000和SQL Server 2008 R2同样的语句在SQL Server 2000可以正常运行返回值,但到SQL Server 2008就不行了网上搜索了一下,好似系由于SQL Server 2008 X64造成的原因,说COM只能是exe程序,不会吧有哪位有同样的环境的测试一下看看是否能成功返回ID值啊,这个功能我是必须要实现的不然还有其他办法能够实现在SQL里面执行动态代码吗??? MSScriptControl.ScriptControl 有X64的版本吗??? 1.检查SQL2000服务启动帐号与SQL2008R2启动帐号是否一致,推荐用local system.2.确认SQL2008R2系统选项Ole Automation Procedures是否为1.sp_configure 'Ole Automation Procedures' 我运行下面的:sp_configure 'Ole Automation Procedures',1go reconfiguregodeclare @intObject intdeclare @intReturn intdeclare @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 没有注册类 上面的是win 7的64位,之前在xp上试过到是可以的 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呢 有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率比这个空间低很多 有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率比这个空间低很多哦 ,你的clr函数是标量函数吗,就是只返回一个值的 还有就是,你的对应到clr程序集的函数的返回值类型,和传入参数类型,都是哪些数据类型呢 可以试试用clr调用。net方法参考http://www.poluoluo.com/jzxy/200801/9462.html CLR我会,但就算使用CLR编写自定义函数,也找不到比MSScriptControl.ScriptControl效率更高的办法.NET到了3.5后也没有提供效率高的动态执行公式的类库,1.1时代有个vsa命名空间下的类可以使用但到了2.0以后已不建议使用了,网上资料都是使用动态编译的办法,但这样效率太低了,我是要做成函数嵌入到SQL语句执行的,动态编译效率根本没办法满足需求的 我就是使用MSScriptControl.ScriptControl做成一个标量函数传入一个字符串然后返回这个字符串的执行结果,用过java的Eval()函数就知道了,例如Eval('1+2*3+Sin(0.8)/Cos(0.3)')公式可能很复杂的 有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率比这个空间低很多你写个clr程序集,应该也可以的 我就是使用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*/ 我就是使用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语法的,这只是一个特例而已 有没有办法解决啊,我一定要实现在SQL里面运行脚本语句啊!!!因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率比这个空间低很多你写个clr程序集,应该也可以的.NET能动态解析公式的有什么现成的类库吗?好像没有吧自己写对于复杂的含有函数的又有困难动态编译虽然能解决问题,但效率太低没法用如果没办法,只能要求公式的语法符合T-SQL写个CLR函数了 给你找了两个,你看看能用吗:http://download.csdn.net/detail/ddrvos/3546118http://download.csdn.net/detail/llllllssssss12345678/4864859 我认为是你的MSScriptControl.ScriptControl控件在SQL Server 2008 R2下面存在兼容性问题。 MSScriptControl在x64位下有问题,也在找升级版 我找遍整个网络都没找到,最后还是自己写个CLR函数先解决问题吧好在该功能不是经常用,慢点没所谓 日志不停的在刷新SQLSERVER 错误 2009 SQL Server 试用版 如何通过SQL里面的外键访问关联的数据啊?如何写这样的SQL语句啊? Sql 中如何计算两日期间的天数 求一条取最大值的SQL语句 sql_server7.0不知怎么回事的问题 如何在触发器中执行全文检索填充? sql菜问题 能否将sql的结果集存成文本文件?(sql2000) 两个数据库非完全同步 sql 的一个疑难杂症,有可能是这样吗?大牛请进! 数据库恢复后中文部分乱码
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MSScriptControl.ScriptControl若无,下载安装组件: Windows Script Control
地址 http://www.microsoft.com/en-us/download/details.aspx?id=1949
同样的语句在SQL Server 2000可以正常运行返回值,但到SQL Server 2008就不行了
网上搜索了一下,好似系由于SQL Server 2008 X64造成的原因,说COM只能是exe程序,不会吧
有哪位有同样的环境的测试一下看看是否能成功返回ID值啊,这个功能我是必须要实现的
不然还有其他办法能够实现在SQL里面执行动态代码吗???
2.确认SQL2008R2系统选项Ole Automation Procedures是否为1.sp_configure 'Ole Automation Procedures'
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 没有注册类
2.确认SQL2008R2系统选项Ole Automation Procedures是否为1.sp_configure 'Ole Automation Procedures'
已经是打开这个开关的了,网上搜索了一天,看来是没有解决办法了,MSScriptControl.ScriptControl是没办法在X64位下运行的除非你用一个X64的程序重新打包改控件
如果不能使用,那么在SQL Server 2008 R2有什么替代办法替代MSScriptControl.ScriptControl呢
因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
比这个空间低很多
因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
比这个空间低很多哦 ,你的clr函数是标量函数吗,就是只返回一个值的
参考
http://www.poluoluo.com/jzxy/200801/9462.html
.NET到了3.5后也没有提供效率高的动态执行公式的类库,1.1时代有个vsa命名空间下的类可以使用
但到了2.0以后已不建议使用了,网上资料都是使用动态编译的办法,但这样效率太低了,我是要做成函数
嵌入到SQL语句执行的,动态编译效率根本没办法满足需求的
公式可能很复杂的
因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
比这个空间低很多你写个clr程序集,应该也可以的
公式可能很复杂的是这样吗:
select 1+2*3+Sin(0.8)/Cos(0.3)
/*
7.75089363702218
*/
公式可能很复杂的是这样吗:
select 1+2*3+Sin(0.8)/Cos(0.3)
/*
7.75089363702218
*/
不能用SQL执行的,我的公式不符合T-SQL语法的,这只是一个特例而已
因为我的脚本语句含有三角函数等一些复杂的函数,而且是动态脚本
没办法用SQL写解析器,那样太难了,一些简单的公式还可以自己解析运行
含有复杂的三角和数学函数的脚本没办法自己解析啊,哎,而且自己解析效率
比这个空间低很多你写个clr程序集,应该也可以的
.NET能动态解析公式的有什么现成的类库吗?好像没有吧
自己写对于复杂的含有函数的又有困难
动态编译虽然能解决问题,但效率太低没法用
如果没办法,只能要求公式的语法符合T-SQL写个CLR函数了
我找遍整个网络都没找到,最后还是自己写个CLR函数先解决问题吧
好在该功能不是经常用,慢点没所谓