Sql server 如果源可用,SSI将有条件地导入

Sql server 如果源可用,SSI将有条件地导入,sql-server,ssis,Sql Server,Ssis,我是SSIS的新手。我有一个SSIS包,它将一个表从不同的SQL Server导入到我的数据库中。我使用导入向导创建了包,但我了解如何使用VisualStudio打开和编辑。基本包首先删除原始表,创建新表,然后导入数据。我每天都这样做 我的问题是有时另一个数据库不可用。直到桌子掉下来,我才知道有问题。在我删除当前副本之前,我需要知道是否有一种简单(对我来说足够)的方法来检查其他表的可用性。这样,如果新数据不可用,我会保留最新数据 我想我可以导入一个临时表,然后检查它的行数,如果0停止在那里。或者

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

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

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


编辑:需要帮助了解如何在SSIS中进行编辑,以及通常如何进行编辑。

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

将查询从

永久表

如果对象ID('dbo.Scores','U')不为空
删除表dbo.得分

临时表格

如果OBJECT_ID('tempdb.dbo.#T','U')不是NULL
升降台#T


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

可能的副本请阅读:您可以将其添加到ssis中,获取它返回的值,然后在它联机时继续,否则会安全失败。谢谢Tanner。这一部分的细节让我摸不着头脑:“获取它返回的值,如果它在线,则继续操作,否则会安全失败”。我从Kyle的回复中了解到,如果失败(返回1?),那么包将停止。谢谢。这很有帮助,但有2个后续问题:1)如何将数据库名称格式化到其他服务器?以及2)如何在SSIS包中构建此功能?不确定如何在SSIS包中执行If,而不转至下一步。我知道如何添加SQL语句并将其连接到下一个任务。@shorton你检查了我发送给你的关于这个问题的链接了吗?现在我有一个“执行SQL任务”,其中删除了表,然后是一个“准备SQL任务”,其中创建了新表,然后是执行导入的“数据流任务”。在SSIS工具箱中,我不知道选择什么来允许分支停止。我建议为此调用创建一个存储过程。在该存储过程中,必须创建一个链接到另一个数据库的服务器。如何实现这一点是利用脚本组件工具。您将执行该语句并继续。够了吗?我很高兴提供更多细节!将查询更改为select具有访问权限(…根据Tanner的建议。也有效。似乎对它所做的更有意义。再次感谢。