TableDiff从dateTime字段突然产生NULL作为字符串



这可能很好地与这个问题相关,总结起来几乎可以肯定是导致问题的源数据库(SQL 2008r2)和目标数据库(SQL 2005)之间的数据库排序差异,正如超级有帮助的@Mike d指出的那样

虽然它可能是相关的,但我认为这个问题值得单独发表。问题是,当这个表diff运行时,它产生一个插入语句,给出'从字符串转换日期时间时转换失败',因为插入语句出于某种原因看起来像这样:

VALUES (N'Null',0,N'A',N'Null',N'Null',0,N'Null',Null,    

N' null '值是问题所在。这在从SQL 2005到SQL 2005的过程中是不会发生的。从SQL 2008r2到SQL 2005,它才开始发生。有没有办法让tableDiff停止N'Null而开始使用这个Null?如果我删除单引号查询运行…

注意—这些问题字段的源数据类型是dateTime,目的数据类型也是dateTime。正因为如此,我的理解是这种情况不应该发生?

N'Null'和Null之间有很大的区别。N' NULL '被视为字符串,而NULL表示没有定义或未定义。所以如果你在datetime字段中插入N' NULL ',那么它会抛出异常,因为它会尝试将这个字符串转换为日期时间,这样做会一直失败,而在NULL的情况下,它将不会在该列中保存任何东西。如果你必须保持列空白,即你不想传递任何值,那么你可以插入NULL

最新更新