SSIS有条件进口

问题描述:

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

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

我想我可以导入临时表,然后检查它的行数,如果0停在那里。或者在丢弃之前先检查其他服务器,但我不知道如何去做。感谢一些指针。

编辑:需要帮助搞清楚如何在SSIS中做到这一点,以及如何做到这一点。

+0

可能重复[检查数据库是否存在,当前登录可以访问](https://*.com/questions/19553515/check-if-database-exists-and-current-login-can-access) – Tanner

+1

read这个:https://docs.microsoft.com/en-us/sql/t-sql/functions/has-dbaccess-transact-sql你可以在ssis中添加它,把它返回的值,然后继续,如果它在线否则安全地失败。 – Tanner

+0

谢谢Tanner。关于这一部分的细节我很模糊:“把它返回的价值,然后继续,如果它在线,否则安全地失败”。我从凯尔的回复中收集到了它的失败(返回1?),那么包裹就会在那里停止。 – shorton

这很容易完成。你必须检查是否有其他数据库表之前落下的是一个简单的命令和这里说的是:

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;

这将允许您删除,如果其他存在。

+0

谢谢。这有帮助,但2后续的:1)如何格式化数据库名称到其他服务器?和2)我如何在SSIS包中构建它?不知道如何在SSIS包中做一个If,而不是进入下一步。我知道如何添加一条SQL语句并将其与下一个任务绑定。 – shorton

+0

@shorton你检查过我给你的关于这个问题的链接吗? – Tanner

+0

现在我有一个“执行SQL任务”,其中表被删除,然后是一个“准备SQL任务”,其中创建了新表,然后是执行导入的“数据流任务”。在SSIS工具箱中,我不知道选择什么来让分支停止。 – shorton