andyclock 发表于 2011-6-6 09:00:55

qtp执行sql的环境

本帖最后由 andyclock 于 2011-6-6 09:03 编辑

简单描述下qtp机器的环境,测试一个系统,qtp同系统客户端装在一个机器上,该机器没装sqlserver,连接DB靠odbc里建个系统DSN,在测试某些场景前需要在DB里预设参数,于是我想把脚本先连DB去预设里面的参数
脚本如下
Dim strsql
Set conn = createobject("ADODB.Connection")
Set comm = createobject("ADODB.command")
conn.Open("DSN=TEST;WSID=SERVER2\SQL2008R2;UID=XXX; PWD=XXX;Database=TEST")
strsql="update sysparam set value='false' where parameter='EnableLocalVersion'"
comm.Execute strsql
但执行下来报错:
The connection can not be used to perform this operation, it is either closed or invalid in this context
Line(7)comm.Execute strsql

网上查了下资料感觉脚本应该没写错,是不是因为没装sqlserver的原因而不能执行?小弟刚接触qtp,无开发经验,还请各位多多指教,谢谢

andyclock 发表于 2011-6-6 09:11:22

补充一下,数据库连接是成功的

If conn.state=0 Then            
Reporter.ReportEvent micFail,"testing","数据库连接失败"
else
Reporter.ReportEvent micPass,"testing","数据库连接成功"
End if

lyscser 发表于 2011-6-6 11:40:25

The connection can not be used to perform this operation, it is either closed or invalid in this context
Line(7)comm.Execute strsql

人家数据库说的很清楚了,这个链接不能操作这个语句,意思可能就是你得换DBA角色才能改系统参数,普通用户是不行的。

andyclock 发表于 2011-6-6 12:30:35

多谢楼上回帖,DBA角色是指UID吗? 我把UID换成SA了,应该是最高权限, 后来发现测试机上有个2005的sql查询分析器,用SA登录试了下语句可以执行。但是回到qtp改了UID还是报这个错。。。

lyscser 发表于 2011-6-6 12:45:20

角色跟权限关系不大,数据库用户一般都有DBA和普通用户的吧,我理解,你可以去百度一下
不过所要改的内容貌似是数据字典的表,都是通过command命令去修改的,你不要纠结于QTP了,你去请教开发或者DBA吧,我只懂oracle,不懂sql server

wendy.wang 发表于 2011-6-7 13:23:17

学习学习

17800455 发表于 2011-6-8 11:26:48

本帖最后由 17800455 于 2011-6-9 14:31 编辑


sqlStr="update sysparam set value='false' where parameter='EnableLocalVersion'"
connStr = "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Data Source=10.158.11.33
"
ExecSql connStr,sqlStr

Public Function ExecSql(connStr,sqlStr)
      
      Set conn = createobject("ADODB.Connection")
      
      Set comm = createobject("ADODB.command")
      
      conn.Open connStr
      
      Set cmd.ActiveConnection = conn

      comm.CommandText=strsql


      If conn.State <> -1 Then
      
                comm.Execute
      
                conn.Close
      
      End If
      
      Set comm = Nothing
      
      Set conn = Nothing

End Function

andyclock 发表于 2011-6-8 15:56:05

楼上的代码拷贝过去改几个参数貌似还是这个错误提示,而且你的脚本貌似同我差不多意思。。。

lyscser 发表于 2011-6-8 16:13:16

你们见过dba_tables、dba_users这些表能让你们改么?

andyclock 发表于 2011-6-8 17:58:49

问题已解决,开发看了下我的脚本说conn和comm缺乏关联,查了下就一句话可以搞定,嘿嘿。

strsql="update sysparam set value='true' where parameter='EnableLocalVersion'"
Set conn = createobject("ADODB.connection")
Set comm = createobject("ADODB.command")
conn.Open("DSN=test;WSID=192.168.88.202;UID=sa; PWD=sa;Database=test")

comm.ActiveConnection=conn

comm.CommandText=strsql
comm.Execute
conn.Close

17800455 发表于 2011-6-9 14:29:46

确实是啊. 疏忽了...............

fanli82 发表于 2011-6-17 15:40:27

简单不代表容易。
页: [1]
查看完整版本: qtp执行sql的环境