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,无开发经验,还请各位多多指教,谢谢 补充一下,数据库连接是成功的
If conn.state=0 Then
Reporter.ReportEvent micFail,"testing","数据库连接失败"
else
Reporter.ReportEvent micPass,"testing","数据库连接成功"
End if 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角色才能改系统参数,普通用户是不行的。 多谢楼上回帖,DBA角色是指UID吗? 我把UID换成SA了,应该是最高权限, 后来发现测试机上有个2005的sql查询分析器,用SA登录试了下语句可以执行。但是回到qtp改了UID还是报这个错。。。 角色跟权限关系不大,数据库用户一般都有DBA和普通用户的吧,我理解,你可以去百度一下
不过所要改的内容貌似是数据字典的表,都是通过command命令去修改的,你不要纠结于QTP了,你去请教开发或者DBA吧,我只懂oracle,不懂sql server 学习学习 本帖最后由 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
楼上的代码拷贝过去改几个参数貌似还是这个错误提示,而且你的脚本貌似同我差不多意思。。。 你们见过dba_tables、dba_users这些表能让你们改么? 问题已解决,开发看了下我的脚本说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 确实是啊. 疏忽了............... 简单不代表容易。
页:
[1]