tsql在MSSM中运行正常,但是当我把它放到一个工作中时就很糟糕

时间:2017-06-22 07:56:23

标签: sql-server jobs

我有一个小脚本,用于在SQL Server 2014数据库上重建索引和更新统计信息 当我在MSSM中执行它时运行正常,所以我想把它放到一个每晚运行的工作中。

我使用此链接创建作业:
    how to schedule a job for sql query to run daily?

这是我在第1步中的脚本:

declare @command nvarchar(1000) 
DECLARE @TableName varchar(255) 
DECLARE TableCursor CURSOR FOR  
  SELECT table_name 
  FROM   information_schema.tables 
  WHERE  table_type = 'base table' 

OPEN TableCursor 
FETCH NEXT FROM TableCursor INTO @TableName 
WHILE @@FETCH_STATUS = 0 
BEGIN 
  set @command = 'alter index all on ' + @TableName + ' rebuild'
  exec sp_executesql @command
  set @command = 'update statistics ' + @TableName
  exec sp_executesql @command

  FETCH NEXT FROM TableCursor INTO @TableName 
END 
CLOSE TableCursor 
DEALLOCATE TableCursor

这是我在第2步中的脚本:

insert into tblLog values (getdate(), 0, 'sql agent job rebuild index', 'indexes rebuild')

当我尝试Start Job at Step时,它会在步骤1的历史记录中显示此消息:

  

以用户身份执行:NT SERVICE \ SQLAgent $ GTT_192。 ALTER INDEX失败   因为以下SET选项具有不正确的设置:   ' QUOTED_IDENTIFIER&#39 ;.验证SET选项是否正确使用   计算列和/或过滤的索引视图和/或索引   索引和/或查询通知和/或XML数据类型方法和/或   空间索引操作。 [SQLSTATE 42000](错误1934)。这一步   失败。

我不清楚这个设置QUOTED_IDENTIFIER来自哪里。

那么为什么我在MSSM中运行而不是在工作中呢? 更重要的是,我能做些什么才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

在开头添加脚本:

SET QUOTED_IDENTIFIER ON