﻿# 資料庫專案無法寫入目標資料庫時的解法 (調整欄位大小時)

**Visual Studio 2010 Premium 企業版** 的 **資料庫專案** 功能在進行 **結構描述比較** (**Schema Compare**) 時，當你的**來源資料庫**中**特定表格**的**某個欄位**的欄位大小變更時（變小）可能會引發「無法成功更新目標結構描述。如需詳細資訊，請參閱 \[錯誤清單\] 視窗。」的錯誤（The target schema could not be updated successfully. For more information, see the Error List window.），此時就必須用今天的方法來解決。

當我們要進行 寫入更新 (Write Updates) 動作的畫面如下：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/a5abdd55cf8b036c6813-image_617.png)

然後當要變更目標資料的欄位大小時，其錯誤畫面如下：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/bf32aac2f766c73bebd5-SNAGHTML154676b4.png)

當我們看 \[錯誤清單\] 視窗的內容可以得知詳細的錯誤訊息：

SQL01268: .Net SqlClient Data Provider: Msg 8152, Level 16, State 13, Line 1 String or binary data would be truncated. ( 字串或二進位資料會被截斷。 )

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/3ded01e8ae209e81c7f6-image_618.png)

由於 字串或二進位資料會被截斷 (String or binary data would be truncated.) 這樣的錯誤訊息在 SQL Server 中十分常見，意思是說當你在執行 INSERT INTO 準備插入一筆資料到資料表之中時，由於插入的資料裡，其中有個欄位的資料長度大於表格中該欄位所定義的長度，因此才會引發 字串或二進位資料會被截斷 這個錯誤，所以才會在執行 寫入更新 (Write Updates) 時發生失敗。

解決的方法如下：

在 新增結構描述比較 (New Schema Comparison) 時修改 選項 (Options) 設定

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/39aca62bbdf9f9b6841b-SNAGHTML156b6161.png)

接著將如下圖的 SET ANSI\_WARNINGS 選項 **取消選取**！

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/36c276c64581e417e23c-SNAGHTML156d3aed.png)

取消了這個選項後，這次在執行一次 寫入更新 (Write Updates) 動作就可以成功寫入目標資料庫了！

注意：由於表格的欄位長度變小，所以當 寫入更新 (Write Updates) 成功後原本在資料庫中的該欄位資料可能會被截斷，這部分的資料遺失風險各位要評估後再執行。

**相關連結**

-   [SET ANSI\_WARNINGS (Transact-SQL)](http://msdn.microsoft.com/zh-tw/library/ms190368.aspx)
-   [選項 (資料庫工具/結構描述比較)](http://msdn.microsoft.com/zh-tw/library/aa833438.aspx)
-   [Options (Database Tools/Schema Compare)](http://msdn.microsoft.com/en-us/library/aa833438.aspx)
