2017-06-22 93 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

相關問題