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として実行されます。次のSETオプションの設定が正しくないため、 'QUOTED_IDENTIFIER'が原因で、ALTER INDEXがエラー に失敗しました。 SETオプションが、 インデックス付きビューおよび/または計算列のインデックス、および/またはフィルタリングされた インデックスおよび/またはクエリデータ型メソッド、および/または 空間インデックス操作で使用するのに適切であることを確認します。 [SQLSTATE 42000](エラー1934)。手順 が失敗しました。
私はこの設定QUOTED_IDENTIFIERの由来を知りません。
MSSMではなくジョブで実行すると、なぜ動作しますか?
さらに重要なのは、それを稼働させるために何ができるのでしょうか?
をシンプルかつそれが感謝を働いたこと – GuidoG