現在、監査を実行するためのスケジューラがあります。このスケジューラーはパラメーターを使用してバッチファイルを呼び出し、バッチファイルは(パラメーターに基づいて)SQLスクリプトを呼び出し、次にストアドプロシージャを呼び出します。
実行される監査ごとに、個別のバッチファイルとSQLファイル。最良の場合、以下の2つのファイルを1つのファイルに結合して、すべての新しい監査に使用できるようにします。最悪の場合、少なくとも、監査ごとに2つではなく1つのファイルを取得するために結合したいと思います。うまくいけば、あなたはすべて助けることができますか?
バッチファイル
@echo on
Echo Running SQL Command File for '%1' Data Audit Check
del "D:\Internal_Reports\%1\%1.txt"
sqlcmd -S localhost -d database -i "D:\DataAudit\%1.sql" -s "," > D:\Temp\%1.csv -I -W -k 1
if %ERRORLEVEL% GTR 0 COPY "D:\Temp\%1.csv" "D:\Internal_Reports\%1\%1.txt"
if %ERRORLEVEL% NEQ 0 goto Error_1
echo No Errors
goto end
:Error_1
if %ERRORLEVEL% NEQ 1 goto Error_2
echo No Errors
goto end
:Error_2
echo Errorlevel %ERRORLEVEL%
set FileName=%1%2
echo Filename %FileName%
echo %ERRORLEVEL% > D:\ErrorLevel\%FileName%
EXIT /B %ERRORLEVEL%
:end
SQLファイル
set NoCount on
DECLARE
@createdBy varchar(16),
@dataAuditBatchId int,
@createdDtTm datetime
select
@createdBy = 'AutomatedAudit'
exec CreateNewDataAuditBatch @createdBy, @dataAuditBatchId output
-- Content Scripts
exec specificAuditStoredProc @createdBy, @dataAuditBatchId
select * from vAuditErrors where JobName in ('specificAuditStoredProc')
:exit(select Case When Counter = 0 then 0 Else 1 End 'errorCode'
from (select CAST(Count(*) AS varchar(4)) AS Counter from vAuditErrors
where JobName in ('specificAuditStoredProc'))
CountTable
)