繁体   English   中英

尝试插入临时表时,object 名称无效

[英]Invalid object name when trying to insert into a temp table

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

有效的代码:

  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')"

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

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

我尝试在 SQL 服务器管理工作室中运行代码,它运行良好。

有没有人有任何想法?

G

我找到了解决方案。 问题是我有一个打开的“ADODB.recordset”。 因此,当我调用“conn.execute”时,它会在每次执行后注销,因为它与以前的 session 不同,并且在我插入临时表之前已将其删除。

我是通过使用 SQL 分析器发现的。

谢谢您的帮助。

G

问题可能不是你的代码,而是 SQL 服务器本身的问题。 我认为在某些情况下可能会不正确地安装日志传送对象。 如果您阅读西班牙语,那么有一个MSDN 论坛讨论,看起来它可能很有用。 不幸的是,我不懂西班牙语,我不能在这个防火墙后面使用谷歌翻译,而且我找不到任何关于它的信息。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM