SQL Server 2005 を使用していますが、まだ DTS を使用しています。テーブルが空かどうかを確認するステップを追加する必要があり、空の場合は何らかの方法でステップを失敗させます。テーブルが空かどうかは簡単に確認できます。
Select count(*) from source_table
しかし、0 を返すことも成功です。0 の場合は、失敗が必要です (別のオプションにフォークし、メールで送信し、いくつかの手順をスキップできるようにするため)。
SQL Server 2005 を使用していますが、まだ DTS を使用しています。テーブルが空かどうかを確認するステップを追加する必要があり、空の場合は何らかの方法でステップを失敗させます。テーブルが空かどうかは簡単に確認できます。
Select count(*) from source_table
しかし、0 を返すことも成功です。0 の場合は、失敗が必要です (別のオプションにフォークし、メールで送信し、いくつかの手順をスキップできるようにするため)。
if (select count(*) from [Table]) = 0 print 'Empty'
-1を返すのはどうですか?
Select
case when count(*)>=0 then count(*) else -1 end
from
source_table
本当にエラーを発生させたい場合は、RAISERRORを使用してそれを行うことができます:
Declare @RowCount as bigint
set @RowCount=count(*) from source_table
if RowCount =0
RAISERROR ('error message', 50000, 1) with log
私はDTSを使用しませんでした。これはSSISで解決されましたが、振り返ってみると、おそらくDTSでも同様のことができたはずです。
ステップ1:カウントを選択し、そのカウントを変数に保存するデータフロータスク。選択カウントには少し手間がかかりました。
select cast(count(*) as integer) as Row_Count from MyTable
次に、データフロータスクの出力は、宛先であり、入力列がROW_COUNTであり、ReadWriteVariablesがTableCount(ステップ2で入力として使用された変数)であるスクリプトコンポーネントでした。
ステップ2:そのカウントを評価し、カウントが0の場合は失敗し、それ以外の場合は成功するスクリプトタスク。これからの分岐は、成功ルートと失敗ルートです。