SSIS returns 一个不正确的错误
SSIS returns an incorrect error
我创建了 SSIS 包,它在 SQL 服务器中创建了 table MyTable
,其中有一列 BaseVariantVersionID
。程序首先将数据插入此 table.
在包的末尾,我应该从 table 中删除列 BaseVariantVersionID
。
第一次调试就OK了。但是在第二次尝试时,SSIS returns 验证错误。它不允许用 BaseVariantVersionID
重新创建 table,因为在下一步中,包无法在列中插入,现在不显示。
也许您知道一些 属性 来禁用当前数据库检查?
更新
我在完成所有步骤后删除了列。
在第一步中,我用列重新创建了数据库。
但是系统 returns 错误 - 看起来它使用现有的 table 进行验证。
如果我没看错你的描述,你会在第一遍删除 列 ,然后在尝试重新创建 table第二遍?如果您尝试创建一个已经存在的 table,即使其中没有 "SomeColumn",也会在 运行 #2 上出现错误。
如果要重新创建 table,则需要删除它;如果 table 存在,则需要更改代码以重新添加该列。
对于执行 SQL 任务,您可以将 BypassPrepare 设置为 True。有时这将允许您设计和构建一个在设计时不验证的包,但会在 运行 时间验证正常。
但我不得不质疑在 运行 时间创建列和 table 的必要性。你确定你需要这样做吗?更典型的用例是让 SSIS 在现有 table 结构中移动数据,而不是在 运行 时间创建它们。
这可能是我能想到的几个问题。
如果 table 在包开头创建之前已经存在,则必须绝对删除它。
示例执行 SQL 任务:
IF OBJECT_ID('MyTable', 'U') IS NOT NULL
DROP TABLE MyTable
GO
CREATE TABLE MyTable (etc...) GO
ALTER TABLE MyTable ADD COLUMN (etc...) GO
其次,您可以在数据流任务属性Window中设置DelayValidation = True
(通常在设计区域中单击数据流任务后位于右下方)。这会将验证延迟到 运行 时间。
如果此时您有缺少字段的错误,您可以在 SQL Server Management Studio 中手动添加该列,然后双击出现错误的任务,任何缺少字段的错误都应该消失(现在该列已存在)。之后就可以保存包退出了。
我创建了 SSIS 包,它在 SQL 服务器中创建了 table MyTable
,其中有一列 BaseVariantVersionID
。程序首先将数据插入此 table.
在包的末尾,我应该从 table 中删除列 BaseVariantVersionID
。
第一次调试就OK了。但是在第二次尝试时,SSIS returns 验证错误。它不允许用 BaseVariantVersionID
重新创建 table,因为在下一步中,包无法在列中插入,现在不显示。
也许您知道一些 属性 来禁用当前数据库检查?
更新
我在完成所有步骤后删除了列。 在第一步中,我用列重新创建了数据库。 但是系统 returns 错误 - 看起来它使用现有的 table 进行验证。
如果我没看错你的描述,你会在第一遍删除 列 ,然后在尝试重新创建 table第二遍?如果您尝试创建一个已经存在的 table,即使其中没有 "SomeColumn",也会在 运行 #2 上出现错误。
如果要重新创建 table,则需要删除它;如果 table 存在,则需要更改代码以重新添加该列。
对于执行 SQL 任务,您可以将 BypassPrepare 设置为 True。有时这将允许您设计和构建一个在设计时不验证的包,但会在 运行 时间验证正常。
但我不得不质疑在 运行 时间创建列和 table 的必要性。你确定你需要这样做吗?更典型的用例是让 SSIS 在现有 table 结构中移动数据,而不是在 运行 时间创建它们。
这可能是我能想到的几个问题。
如果 table 在包开头创建之前已经存在,则必须绝对删除它。
示例执行 SQL 任务:
IF OBJECT_ID('MyTable', 'U') IS NOT NULL
DROP TABLE MyTable
GO
CREATE TABLE MyTable (etc...) GO
ALTER TABLE MyTable ADD COLUMN (etc...) GO
其次,您可以在数据流任务属性Window中设置DelayValidation = True
(通常在设计区域中单击数据流任务后位于右下方)。这会将验证延迟到 运行 时间。
如果此时您有缺少字段的错误,您可以在 SQL Server Management Studio 中手动添加该列,然后双击出现错误的任务,任何缺少字段的错误都应该消失(现在该列已存在)。之后就可以保存包退出了。