我的 Azure 数据工厂对每个具有
TIMESTAMP
列的表抛出错误“无法更新时间戳列”。
ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=数据库操作失败。请搜索错误以获取更多详细信息。,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=无法更新时间戳列。,Source=.Net SqlClient Data提供程序,SqlErrorNumber=272,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=272,State=1,Message=无法更新时间戳列。,},],'
我不想更新专栏本身。但即使我从列映射中删除它,它也会崩溃。这里还没有删除:
我知道
TIMESTAMP
不是一个简单的日期时间,只要该行中的另一列更新,它就会自动更新。
时间戳数据类型只是一个递增数字,不保留日期或时间。
但是我该如何解决这个问题呢?
我尝试在我的 ADF 上重现该问题,如果我从映射管道运行中删除时间戳列,则不会出现错误。
但是由于这对您不起作用,这里有 2 个解决方法选项:
选项 1 - 在源上,使用查询并从查询中删除时间戳列。
选项 2 - 我尝试重现您的错误,发现它只发生在更新插入时。如果我使用插入,它运行时不会出现错误(尽管它忽略时间戳列上的插入并增加时间戳)。因此,您可以尝试插入到临时表,然后在 sql 中仅更新您想要的列。
我面临同样的问题,我将列的数据类型更改为 varchar 以便 upsert 工作,不确定它是否是正确的解决方案。