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