ADODB Operation is not allowed when the object is closed.
Уважаемые, кто нибудь сталкивался и знает как победить? :(
С студии скуля само собой все работает.
Сам запрос вот такой:
Такой запрос тоже падает:
С студии скуля само собой все работает.
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = СтрокаСоединения;
Соединение.Open();
Команда = Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection = Соединение;
Команда.CommandText = ТекстЗапроса;
Выборка = Новый COMОбъект("ADODB.RecordSet");
Выборка = Команда.Execute();
Если Выборка.EOF() Тогда //тут падает Operation is not allowed when the object is closed.
ПоказатьСам запрос вот такой:
ТекстЗапроса = "
|SET NOCOUNT ON
|-- Список проблемных заданий
|USE MSDB
|;WITH CTE_MostRecentJobRun AS
|(
|-- For each job get the most recent run (this will be the one where Rnk=1)
|SELECT job_id,run_status,run_date,run_time
|,RANK() OVER (PARTITION BY job_id ORDER BY run_date DESC,run_time DESC) AS Rnk
|FROM sysjobhistory
|WHERE step_id=0
|)
|SELECT
|name AS [JobName],
|CONVERT(VARCHAR,DATEADD(S,(run_time/10000)*60*60 /* hours */
| +((run_time - (run_time/10000) * 10000)/100) * 60 /* mins */
| + (run_time - (run_time/100) * 100) /* secs */,
| CONVERT(DATETIME,RTRIM(run_date),113)),100) AS [TimeRun],
|CASE WHEN enabled=1 THEN 'Enabled'
| ELSE 'Disabled'
| END AS [JobStatus]
|FROM CTE_MostRecentJobRun MRJR
| JOIN sysjobs SJ ON MRJR.job_id=sj.job_id
|WHERE Rnk = 1
| AND run_status = 0 -- i.e. failed
|ORDER BY name
|";
ПоказатьТакой запрос тоже падает:
ТекстЗапроса = "
|SET NOCOUNT ON
|USE MSDB
|SELECT name AS [JobName]
|,CONVERT(VARCHAR,DATEADD(S,(run_time/10000)*60*60 /* hours */
| +((run_time - (run_time/10000) * 10000)/100) * 60 /* mins */
| + (run_time - (run_time/100) * 100) /* secs */
| ,CONVERT(DATETIME,RTRIM(run_date),113)),100) AS [TimeRun]
| ,CASE WHEN enabled=1 THEN 'Enabled'
| ELSE 'Disabled'
|END [JobStatus]
|,CASE WHEN SJH.run_status=0 THEN 'Failed'
| WHEN SJH.run_status=1 THEN 'Succeeded'
| WHEN SJH.run_status=2 THEN 'Retry'
| WHEN SJH.run_status=3 THEN 'Cancelled'
| ELSE 'Unknown'
|END [JobOutcome]
|
|FROM sysjobhistory SJH
|JOIN sysjobs SJ ON SJH.job_id=sj.job_id
|WHERE step_id=0
| AND run_date Between CONVERT(varchar, GETDATE(), 112)-7 and CONVERT(varchar, GETDATE(), 112)
|ORDER BY name,run_date,run_time
|";
ПоказатьНайденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Я читал, а чем поможет?
Второй запрос у меня не имеет никаких пакетных запросов по сути, но так же не работает
Зато вот такой где по факту 3 пакета, прекрасно работает :( И не понятно что не так в тех.
пробелы в командах это форум корявит
Второй запрос у меня не имеет никаких пакетных запросов по сути, но так же не работает
Зато вот такой где по факту 3 пакета, прекрасно работает :( И не понятно что не так в тех.
ТекстЗапроса = "
|SET NOCOUNT ON
|
|IF OBJECT_ID('tempdb.dbo.#RunningJobs') IS NOT NULL
|DR OP TABLE #RunningJobs
|
|CRE ATE TABLE #RunningJobs (
| Job_ID UNIQUEIDENTIFIER,
| Last_Run_Date INT,
| Last_Run_Time INT,
| Next_Run_Date INT,
| Next_Run_Time INT,
| Next_Run_Schedule_ID INT,
| Requested_To_Run INT,
| Request_Source INT,
| Request_Source_ID VARCHAR(100),
| Running INT,
| Current_Step INT,
| Current_Retry_Attempt INT,
| State INT )
|INS ERT IN TO #RunningJobs EXEC master.dbo.xp_sqlagent_enum_jobs 1,garbage
|
|SELECT
| name AS [JobName]
| ,CASE WHEN next_run_date=0 THEN '[Not scheduled]' ELSE
| CONVERT(VARCHAR,DATEADD(S,(next_run_time/10000)*60*60 /* hours */
| +((next_run_time - (next_run_time/10000) * 10000)/100) * 60 /* mins */
| + (next_run_time - (next_run_time/100) * 100) /* secs */,
| CONVERT(DATETIME,RTRIM(next_run_date),112)),100) END AS [StartTime]
|FROM #RunningJobs JSR
| JOIN msdb.dbo.sysjobs ON JSR.Job_ID=sysjobs.job_id
|WHERE Running=1 -- i.e. still running
|ORDER BY name,next_run_date,next_run_time
|";
Показатьпробелы в командах это форум корявит
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот