2017-06-22 91 views
0

我有一个小脚本用于重建索引并更新SQL Server 2014数据库中的统计信息。
当我在MSSM中执行它时,它运行良好,因此我想将它放入每天晚上运行的工作中。tsql在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'。验证SET选项是否适用于 索引视图和/或索引计算列和/或过滤索引和/或查询通知和/或XML数据类型方法和/或 空间索引操作。 [SQLSTATE 42000](错误1934)。步骤 失败。

我不知道这个设置QUOTED_IDENTIFIER来自哪里。

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

回答

1

添加脚本在开始时:

SET QUOTED_IDENTIFIER ON 
+0

那么简单,它的工作谢谢 – GuidoG

相关问题