[英]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.