【问题标题】:SSIS conditionally import if source is available如果源可用,SSIS 有条件地导入
【发布时间】:2017-10-18 14:29:05
【问题描述】:

我是 SSIS 的新手。我有一个 SSIS 包,它从不同的 SQL Server 导入一个表来挖掘。我使用导入向导创建了包,但我了解如何使用 VisualStudio 打开和编辑。基本包首先删除原始表,创建新表然后导入数据。我每天都这样做。

我的问题是有时其他数据库不可用。直到桌子下降后我才知道有问题。在删除当前副本之前,我需要知道是否有一种简单(对我来说足够)的方法来检查其他表的可用性。这样,如果新数据不可用,我会保留我的最新数据。

我想我可以导入一个临时表,然后检查它的行数,如果 0 就停在那里。或者在删除之前先以某种方式检查另一台服务器,但我也不知道该怎么做。感谢一些指点。

编辑:需要帮助弄清楚如何在 SSIS 中执行此操作以及一般如何执行此操作。

【问题讨论】:

标签: sql-server ssis


【解决方案1】:

这很容易实现。您必须在删除之前检查其他数据库表是一个简单的命令,这里是:

here拉取查询

永久表

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

临时表

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

如果另一个存在,这将允许您删除。

【讨论】:

  • 谢谢。这有帮助,但有 2 个后续:1) 如何将数据库名称格式化为另一台服务器?和 2) 我如何在 SSIS 包中构建它?不确定如何在 SSIS 包中执行 If 并且不进行下一步。我确实知道如何添加 SQL 语句并将其与下一个任务联系起来。
  • @shorton 你检查过我发给你的关于这个问题的链接吗?
  • 现在我有一个删除表的“执行 SQL 任务”,然后是创建新表的“准备 SQL 任务”,然后是执行导入的“数据流任务”。在 SSIS 工具箱中,我不知道该选择什么来让分支停止。
  • 我建议为此调用创建一个存储过程。在该存储过程中,您必须创建一个链接到另一个数据库的服务器。如何做到这一点是利用脚本组件工具。您将执行该语句并继续前进。够不够覆盖?我很乐意提供更多详细信息!
  • 根据 Tanner 的建议将查询更改为选择 HAS_ACCESS(...
猜你喜欢
  • 2019-04-21
  • 1970-01-01
  • 2021-01-02
  • 2016-07-21
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
相关资源
最近更新 更多