徵狀
假設您有一個在其上建立一或多個索引的 Microsoft SQL Server 資料表。 當您查詢資料表時,SQL Server 可能會對 CHAR 和 BINARY 欄執行不一致的資料空白。 在 CHAR 和 BINARY 資料欄的結尾傳回尾隨空格的不一致行為,視下列情況而定:
-
在 SQL Server 資料表中建立資料行時,ANSI_PADDING 的設定。
-
決定在資料行上執行 [表格掃描] 或 [索引搜尋]。
原因
在某些情況下,SQL Server 可能會執行優化,讓它避開許多作業,以加快資料的傳送速度。 出現這個問題是因為 SQL Server 無法辨識在上述案例中無法套用優化。
其他相關資訊
這個 SQL Server 的行為不符合下列文章中所述的行為:使用 Char 和 Varchar 資料。
如果在建立 char Null 資料行時 ANSI_PADDING 是開啟的,它的運作方式與非 Null 資料行的行為相同:值會以右邊填補為數據行的大小。 如果在建立 char Null 資料行時,ANSI_PADDING 是關閉的,則它的行為就像是一個 Varchar 欄,其中 ANSI_PADDING 設為 OFF:尾隨空格會被截斷。
解決方案
此問題已在 SQL Server 的下列累積更新中修正:
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題
參考
瞭解 Microsoft 用於描述軟體更新的 詞彙。