尝试插入临时表时无效的对象名称

时间:2011-07-14 15:59:46

标签: sql vbscript adodb

我正在尝试监视数据库的镜像副本。我正在运行一个能够执行其他检查的脚本,其中一些非常类似于导致我出现问题的一个。

有效的代码:

  conn.execute "if object_id('tempdb..#logs') is not null drop table tempdb..#logs"
  conn.execute "create table #logs (...'a lot of variables)"
  conn.execute "insert into #logs exec('dbcc sqlperf (logspace)')"

不起作用的代码:

  conn.execute "if object_id('tempdb..#mirrors') is not null drop table tempdb..#mirrors"
  conn.execute "create table #mirrors (...'alot of variables)"
  conn.execute "insert into #mirrors exec('msdb..sp_dbmmonitorresults "&db&",1,0')"

尝试在第二个示例中执行插入时出现无效对象上的错误。包含所有变量的字符串是否可能长?

我之前从未使用过Visual Basic,所以这可能是显而易见的。

我试图在SQL Server manegment studio中运行代码,它运行正常。

有没有人有任何想法?

2 个答案:

答案 0 :(得分:3)

我找到了解决方案。问题是我有一个开放的“ADODB.recordset”。因此,当我调用“conn.execute”时,它会在每次执行后退出,因为它与之前的会话不同,临时表在我插入之前就被删除了。

我通过使用SQL分析器找到了。

感谢您的帮助。

答案 1 :(得分:1)

问题可能不是您的代码,而是SQL Server本身的问题。我认为有些情况下日志传送对象可能会被错误地安装。如果您阅读西班牙语,那么有一个MSDN forum discussion看起来可能有用。不幸的是,我不读西班牙语,我不能在这个防火墙后面使用谷歌翻译,而且我找不到任何有关它的信息。

我尝试运行代码时遇到的完整错误:

Msg 208, Level 16, State 1, Procedure sp_dbmmonitorresults, Line 137 Invalid object name 'msdb.dbo.dbm_monitor_data'.