VBS 调用SQL Server加密存储过程提示:对象关闭时 不允许操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBS 调用SQL Server加密存储过程提示:对象关闭时 不允许操作相关的知识,希望对你有一定的参考价值。
我用VBS调用自建的存储过程没有任何问题,但是用相同的脚本调用SQL Server加密存储过程提示:对象关闭时 不允许操作!
脚本:
Dim sPro,sDsn,sSer,sCon,conn,sSql,oRs,oCom
Dim m,i,n,sql
sCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=HistorianStorage;Data Source=PH2013\HISTORIAN" Set conn = CreateObject("ADODB.Connection") conn.ConnectionString = sCon conn.CursorLocation = 3 conn.Open Set oRs = CreateObject("ADODB.Recordset") Set oCom = CreateObject("ADODB.Command") oCom.CommandType = 1'adCmdStoredProc Set oCom.ActiveConnection = conn sql = "[IS].[udsp_getTagTable] '2801C4C4-507A-4802-BE09-8F2225074AE5','2014/05/09 04:00:00','2014/05/09 04:01:00'" 'sql = "sp_mycp 'HistorianStorage','TLG','TagVersion'" oCom.CommandText = sql
Set oRs = oCom.Execute m = oRs.RecordCount n = oRs.Fields.CountMsgbox m Msgbox n Set oRs = Nothing conn.Close Set conn = Nothing
截图:
这样的提示一般都是CONN对象没有打开,也就是数据库没有连接上,建议你仔细检查一下追问
如果我把这句 sql = "[IS].[udsp_getTagTable] '2801C4C4-507A-4802-BE09-8F2225074AE5','2014/05/09 04:00:00','2014/05/09 04:01:00'"注释掉,把这句 'sql = "sp_mycp 'HistorianStorage','TLG','TagVersion'"取消注释,则一切正常
追答那应该是你 [IS].[udsp_getTagTable] 里面有错误
追问我在SQL Server管理器中右键点击这个存储过程,选择Excute Stored Procedure,在弹出的窗口中填写@tagId,@begintime,@endtime三个参数的值,即'2801C4C4-507A-4802-BE09-8F2225074AE5','2014/05/09 04:00:00','2014/05/09 04:01:00',是可以执行的,而且执行结果正确!
追答你程序里若有容错的话,一定要先去掉,然后再看看是哪出了问题
追问谢谢!问题我自己解决了:我又建立了一个存储过程,用相同的参数调用那个加密的存储过程,在调用之前加了一句:SET NOCOUNT ON,然后在VBS中调用我建立的存储过程就可以了。
追答难道你以前的存储过程没有加SET NOCOUNT ON么?切记以后写存储过程,第一句话就写这句。很重要的
以上是关于VBS 调用SQL Server加密存储过程提示:对象关闭时 不允许操作的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server存储过程文本加密与解密过程详解 2019版可用