3

SQL Server 2005 を使用していますが、まだ DTS を使用しています。テーブルが空かどうかを確認するステップを追加する必要があり、空の場合は何らかの方法でステップを失敗させます。テーブルが空かどうかは簡単に確認できます。

Select count(*) from source_table

しかし、0 を返すことも成功です。0 の場合は、失敗が必要です (別のオプションにフォークし、メールで送信し、いくつかの手順をスキップできるようにするため)。

4

4 に答える 4

2
if (select count(*) from [Table]) = 0 print 'Empty'
于 2013-05-28T14:46:17.890 に答える
1

-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
于 2009-09-02T16:14:55.230 に答える
-1

私はDTSを使用しませんでした。これはSSISで解決されましたが、振り返ってみると、おそらくDTSでも同様のことができたはずです。

ステップ1:カウントを選択し、そのカウントを変数に保存するデータフロータスク。選択カウントには少し手間がかかりました。

select cast(count(*) as integer) as Row_Count from MyTable

次に、データフロータスクの出力は、宛先であり、入力列がROW_COUNTであり、ReadWriteVariablesがTableCount(ステップ2で入力として使用された変数)であるスクリプトコンポーネントでした。

ステップ2:そのカウントを評価し、カウントが0の場合は失敗し、それ以外の場合は成功するスクリプトタスク。これからの分岐は、成功ルートと失敗ルートです。

于 2009-10-15T23:37:07.553 に答える