0

我有一个 SQL 代理作业,从上午 9 点到下午 6 点每 15 分钟运行一次。

DECLARE @db_name varchar(100) 
DECLARE c_db_names CURSOR FOR
SELECT name 
FROM sys.databases
WHERE name NOT IN
('VARIOUS DATABASES HERE')
TRUNCATE TABLE DBDATA.dbo.DATA
OPEN c_db_names

FETCH c_db_names INTO @db_name

WHILE @@Fetch_Status = 0
BEGIN
  EXEC('
    INSERT INTO DBDATA.dbo.DATA
    SELECT 
      ''' + @db_name + '''
      ,COUNT(*)
      ,MIN(datereq)
    FROM ' + @db_name + '.dbo.TABLE
  ' + 'where lqdone = 0')
  FETCH c_db_names INTO @db_name
END

CLOSE c_db_names
DEALLOCATE c_db_names

如果有任何结果,我会通过电子邮件将它们发送给自己。由于某种未知的原因,在过去的两三周里,我无法在早上 9 点 15 分之前运行该查询,当时 SQL 代理开始工作并根据主题显示错误消息而失败。每次下一次尝试都很好,如果我尝试手动运行它只会在上午 9:15 或更早时失败。真的很困惑,不确定这里发生了什么。

datereq 字段是 datetime,db_name 是 nchar。它在它检查的第 11 个数据库上失败,但我检查了该表,它与其他表完全相同。

有任何想法吗?:)

4

0 回答 0