2017-10-18 5 views
1

SSISを初めて使用しています。私は別のSQL ServerからテーブルをインポートするSSISパッケージを持っています。インポートウィザードを使用してパッケージを作成しましたが、VisualStudioを使用して開いて編集する方法を理解しています。基本パッケージは最初に元のテーブルを削除し、新しいテーブルを作成してからデータをインポートします。私は毎日これをする。ソースが利用可能な場合、SSISを条件付きでインポートします。

私の問題は、他のデータベースが利用できないことがあります。私はテーブルが落ちるまで問題があるかどうか分からない。私は現在のコピーを削除する前に、他のテーブルの可用性をチェックする簡単な方法があるかどうかを知る必要があります。そうすれば、新しいデータが入手できない場合でも最新のデータを保持することができます。

テンポラリテーブルにインポートして、行数を確認してそこに0があると思った。あるいは、何とか落とす前に他のサーバーを最初にチェックしてください。でも、私はどちらかを行う方法がわかりません。いくつかの指摘に感謝します。

編集:SSISで行う方法と一般的な操作方法を理解するのに役立つ必要があります。

+0

[データベースが存在し、現在のログインでアクセスできるかどうか]の複製が可能です(https://stackoverflow.com/questions/19553515/check-if-database-exists-and-current-login-can-access) – Tanner

+1

読み取りこれは:https://docs.microsoft.com/en-us/sql/t-sql/functions/has-dbaccess-transact-sqlあなたはそれを返すことができますssisでそれを追加し、それがオンラインであれば続行しますそうでなければ安全に失敗する。 – Tanner

+0

ありがとうTanner。それは、私があまりにも曖昧だというこの部分の詳細です:「それが返す価値を得て、それがオンラインであれば安全に失敗する」。失敗した場合(1を返します)、パッケージがそこで停止します。おかげさまで – shorton

答えて

3

これは簡単に実行できます。

IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL DROP TABLE dbo.Scores;

一時表

here

常設表からの問合せを引っ張っ:滴下され、ここで簡単なコマンドであるとする前に、他のデータベーステーブルをチェックしなければなりません

IF OBJECT_ID('tempdb.dbo.#T', 'U') IS NOT NULL DROP TABLE #T;

他のものが存在する場合は削除できます。

+0

ありがとうございます。これは役に立ちますが、2つのフォローアップがあります:1)データベース名を他のサーバーにフォーマットする方法は? 2)SSISパッケージでこれをどのように構築するのですか? SSISパッケージでIfを実行する方法がわからず、次の手順には進まない。私はSQL文を追加して次のタスクに結びつける方法を知っています。 – shorton

+0

@shorton質問にあなたを送ったリンクをチェックしましたか? – Tanner

+0

今、私は、テーブルが削除された「SQLタスクの実行」と、新しいテーブルが作成される「準備SQLタスク」と、インポートを行う「データフロータスク」を持っています。 SSISツールボックスでは、ブランチの停止を許可するかどうかわかりません。 – shorton

関連する問題