Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用BCP实用程序更新SQL Server的表_Sql_Sql Server 2005_Windows Vista_Bcp - Fatal编程技术网

无法使用BCP实用程序更新SQL Server的表

无法使用BCP实用程序更新SQL Server的表,sql,sql-server-2005,windows-vista,bcp,Sql,Sql Server 2005,Windows Vista,Bcp,作为部署过程的一部分,我们有一个预先填充数据的数据库表。因为其中一列是二进制的,所以它是二进制序列化对象,我们使用BCP将数据复制到表中 到目前为止,这已经非常有效,但是,今天我们首次在Windows Server 2008计算机上尝试了这项技术,并注意到并非所有列都在更新。在此操作中通常插入的31行中,只有2行的二进制列填充正确。其他29行的二进制列只有空值。这是我们第一次看到这样的问题,这是我们用于所有部署的同一个.dat文件 其他人以前有没有遇到过这个问题,或者对这个问题有什么见解 提前感

作为部署过程的一部分,我们有一个预先填充数据的数据库表。因为其中一列是二进制的,所以它是二进制序列化对象,我们使用BCP将数据复制到表中

到目前为止,这已经非常有效,但是,今天我们首次在Windows Server 2008计算机上尝试了这项技术,并注意到并非所有列都在更新。在此操作中通常插入的31行中,只有2行的二进制列填充正确。其他29行的二进制列只有空值。这是我们第一次看到这样的问题,这是我们用于所有部署的同一个.dat文件

其他人以前有没有遇到过这个问题,或者对这个问题有什么见解

提前感谢,,
Jeremy

我猜您正在使用-c或-w作为文本转储,它被它不喜欢的字符的特定组合和空值的子绑定所阻塞。如果没有格式文件,在本机模式下也会发生这种情况。试试下面的方法,看看是否有帮助。显然,您需要自己添加服务器和登录开关

bcp MyDatabase.dbo.MyTable format nul -f MyTable.fmt -n
bcp MyDatabase.dbo.MyTable out MyTable.dat -f MyTable.fmt -k -E -b 1000 -h "TABLOCK"
这将把表数据转储为具有格式文件、空值和标识值的直接二进制数据,以确保所有内容完全一致。此外,它将使用1000个批次来优化数据转储。然后,要将其插回:

bcp MySecondData.dbo.MyTable in MyTable.dat -f MyTable.fmt -n -b 1000

…它将使用格式文件、数据文件和设置批处理来稍微提高速度。如果您需要更高的速度,您可能希望查看批量插入、FirstRow/LastRow和并行加载,但这超出了这个问题的范围

SQL Server我想。。。2005年还是2008年?是的,很抱歉SQL Server 2005。到目前为止,我们已经在开发者版和企业版上运行了这个程序。我们看到的这台机器实际上运行的是标准版。我不确定这是否导致了这个问题。