Неверное имя объекта при попытке вставить во временную таблицу - PullRequest
1 голос
/ 14 июля 2011

Я пытаюсь отслеживать зеркальную копию базы данных. Я запускаю сценарий, который также может выполнять другие проверки, и некоторые из них очень похожи на те, которые вызывают у меня проблемы.

Код, который работает:

  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-сервером, и он отлично работает.

У кого-нибудь есть идеи?

G

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

Я нашел решение.Проблема была в том, что у меня был открытый "ADODB.recordset".Поэтому, когда я вызывал «conn.execute», он выходил из системы после каждого выполнения, и там не было того же сеанса, что и раньше, и временная таблица была удалена, прежде чем я смог вставить ее.

Я узнал с помощью профилировщика SQL.

Спасибо за помощь.

G

1 голос
/ 14 июля 2011

Возможно, проблема не в вашем коде, а в самом SQL Server. Я думаю, что есть случаи, когда объекты доставки журналов могут быть неправильно установлены. Если вы читаете по-испански, то есть обсуждение форума MSDN , которое может показаться полезным. К сожалению, я не читаю по-испански, я не могу использовать Google Translate за этим брандмауэром, и я не мог ничего больше узнать об этом.

Полная ошибка, которую я получаю при попытке запустить ваш код:

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

...