0

基本的には、SQL Server 2008 R2ストアドプロシージャを呼び出すバッチファイルがあります。このプロシージャは、断片化されたテーブルのDBを5%以上断片化してレポートをテキストファイルに出力します。このバッチファイルが自動的に実行されないのはなぜですか?

バッチファイルは、一晩実行するタスクスケジューラジョブとして設定されています。

タスクスケジューラでタスクを右クリックしてすぐに実行すると、スクリプトはSQL Server上で実行され、出力はテキストファイルにリダイレクトされます。問題は私が一晩トリガーするように自動化することです。

set local 
REM Preparing Timestamp Information 
set year=%date:~6,4% 
set month=%date:~3,2% 
set day=%date:~0,2% 
set hour=%time:~0,2% 
REM Replace leading space with zero 
if “%hour:~0,1%” ==” ” set hour=0%hour:~1,1% 
set minute=%time:~3,2% 
set seconds=%time:~6,2% 
set FILENAMEANDPATH= c:\DBMaintenanceLogs\SP_InspectorLog_%day%-%month%-%year%_%hour%-%minute%-%seconds%.log 

sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_DBIndexFragmentationInspector @IndexFragmentationPercentage=5" -d MyDBName -o %FILENAMEANDPATH% 

タスクスケジューラジョブが実行されず、タスクがリターンコード255で正常に完了したと表示されるという問題があります。

タスクは、システム管理者アカウントを使用して実行するように設定されています。

P.S.ストアドプロシージャ:

USE [MyDBName] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[sp_DBIndexFragmentationInspector] 
@IndexFragmentationPercentage INT 
AS 
BEGIN 
SELECT 
    OBJECT_NAME(A.[object_id]) as 'TableName', 
    B.[name] as 'IndexName', 
    A.[index_type_desc], 
    A.[avg_fragmentation_in_percent] 
FROM 
    sys.dm_db_index_physical_stats(db_id(),NULL,NULL,NULL,'LIMITED') A 
INNER JOIN 
    sys.indexes B ON A.[object_id] = B.[object_id] and A.index_id = B.index_id 
where [avg_fragmentation_in_percent] > @IndexFragmentationPercentage 
order by TableName 
END 
+1

あなたのコード ''%hour:〜0,1% "==" "'、実際には '' ''の代わりに '' "'であるか、ペーストの問題? –

+0

@MCNDその行のバッチファイルでは二重引用符だけが ""であり、 ""ではなく、私はそれがスクリプトのその部分をコピーしたところからハングオーバーだと思います。それが問題になると思いますか?私はタスクを手動で実行するとうまくいくと言っています。 –

+0

あなたの問題は '。\ SQLEXPRESS'です。スケジュールされたタスクは別のフォルダ( '%systemroot%\ system32')で実行されます。 – Stephan

答えて

0

私はまったく同じエラーに直面しています。私の場合、解決策は、スクリプトの最後にexit 0を追加することでした。私はなぜそれが働いたのか分かりません。

+0

Oo ...バッチファイルまたはストアドプロシージャの最後に? –

+0

@PaulZahra私は両方を試してみましたが、どの人が働いているか分かりません。約5年前だったので、私は覚えていない。 – MichaelS

+0

'exit'はバッチコマンドです。 SQLスクリプトは 'END'で終了します。しかし、私は見ることができません、どのようにこれはおそらくここで助けることができます。 – Stephan

関連する問題