2011-07-14 66 views
1

我試圖監視數據庫的鏡像副本。我正在運行一個腳本,它也能執行其他檢查,其中一些腳本與那些導致我出現問題的腳本非常相似。嘗試插入臨時表時無效的對象名稱

的作品

代碼:

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服務器manegment工作室的代碼,它的作品完美。

有沒有人有任何想法?

+0

第一組VB代碼按原樣成功運行,還是隻在SSMS中運行SQL代碼時才起作用? –

+0

@Tom H。它按原樣運行。第二個例子只適用於SSMS – Gisli

+0

db是什麼?它是唯一的變量。 – marc

回答

3

我找到了解決辦法。問題是我有一個開放的「ADODB.recordset」。因此,當我調用「conn.execute」時,它在每次執行後都會註銷,並且因爲它與以前不同,所以臨時表在我插入之前就被刪除了。

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

感謝您的幫助。

G

+0

謝謝。我很高興我不必弄清楚。 – gwgeller

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'.

+0

謝謝,我會研究一下。我開始認爲表「#mirrors」沒有被創建。這很奇怪 – Gisli

相關問題