2009-07-08 37 views
0

我們有一個數據庫表,我們在數據庫中預先填充數據,作爲部署過程的一部分。由於其中一列是二進制的(它是一個二進制序列化對象),我們使用BCP將數據複製到表中。無法使用BCP實用程序更新SQL Server表

到目前爲止,這個工作得很好,但是,今天我們第一次在Windows Server 2008機器上嘗試過這種技術,並且注意到並非所有的列都被更新了。在通常作爲此操作的一部分插入的31 rows中,只有2 rows實際上其binary columns正確填充。其他29行只有它們的空值binary column。這是我們看到類似問題的第一種情況,這與我們用於所有部署的.dat文件相同。

以前是否有其他人遇到過這個問題,或者對這個問題有什麼看法?

由於提前, 傑里米

+0

SQL Server我認爲...... 2005年或2008年? – gbn 2009-07-08 19:19:44

回答

0

我的猜測是,你正在使用-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 

...這將使用的格式文件,數據文件,並設置配料來增加速度不快。如果你需要更快的速度,你會想看看BULK INSERT,FirstRow/LastRow和並行加載,但這有點超出了這個問題的範圍。 :)

相關問題