Sql 行粒度操作/错误处理

Sql 行粒度操作/错误处理,sql,sql-server,tsql,Sql,Sql Server,Tsql,我读过很多文章和帖子,都是关于游标如何成为等价单集查询的巨大性能障碍的 但是,使用光标,您可以在所有未出错的行上成功执行所需的操作,并为出错的每一行提供错误消息 是否有其他方法可以通过集合操作实现此行粒度?否,正如名称所示,基于集合的操作可以通过集合来实现。它要么成功,要么失败 在这种情况下,光标(或任何其他程序方法,如WHILE或外部程序)可能是最佳选择 如果性能很重要,我更愿意在第一次基于集合的导入中使用容错暂存表。然后在那里执行一些质量/清理操作,以确保成功传输并将清理后的数据转移到目标表

我读过很多文章和帖子,都是关于游标如何成为等价单集查询的巨大性能障碍的

但是,使用光标,您可以在所有未出错的行上成功执行所需的操作,并为出错的每一行提供错误消息


是否有其他方法可以通过集合操作实现此行粒度?

否,正如名称所示,基于集合的操作可以通过集合来实现。它要么成功,要么失败

在这种情况下,
光标(或任何其他程序方法,如
WHILE
或外部程序)可能是最佳选择

如果性能很重要,我更愿意在第一次基于集合的导入中使用容错暂存表。然后在那里执行一些质量/清理操作,以确保成功传输并将清理后的数据转移到目标表中(基于集合)


这取决于数据、您的业务规则,当然还有行数。

在T-SQL中,不是。这就是为什么ETL流程通常在客户端代码中执行RBAR验证和转换,使用批量加载方法将快乐路径数据加载到临时表中,以便通过T-SQL最终基于集合的加载。@GeorgeMenoutis。这取决于操作是什么。对于数据转换,几乎不需要光标。您确实需要游标(或类似的东西)来执行每行上的存储过程。