簡體   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