共用方式為


ASCII 函式會在 Publisher 和 Subscriber 資料庫數據表中傳回不同的結果

適用於: SQL Server 2019

本文提供函式在發行者和訂閱者資料庫數據表中傳回不同結果的問題 ASCII 因應措施。

徵兆

請參考下列案例:

  • 您在 SQL Server 2019 中使用交易式或合併式複寫。

  • 初始架構和數據會透過復寫 快照集代理程式 套用。

  • 在 Publisher 資料庫中,定義為字元資料類型的數據列包含 NULL 值 - ASCII 字元 0 char(0)

在此案例中,當您使用 函 ASCII 式來轉換發行者和訂閱者資料庫數據表中的數據行時,會傳回不同的結果。 您可以參考下列範例:

  • 轉換 Publisher 資料庫資料表中的資料列 (col1) :

    SELECT id, col1, ASCII(col1) FROM PublisherTable
    

    發行者數據表結果的螢幕快照。

  • 轉換訂閱者資料庫資料表中的資料列 (col1) :

    SELECT id, col1, ASCII(col1) FROM SubscriberTable
    

    訂閱者數據表結果的螢幕快照。

因應措施

  • 若要解決此問題以進行事務複製,請遵循下列步驟:

    1. 開啟 SQL Server Management Studio,並連線到做為散發者的伺服器。

    2. [物件總管] 底下,展開 [SQL Server Agent],然後展開 [作業]。

    3. 選取受影響發行集的快照集代理程序作業,以滑鼠右鍵按兩下它,然後選取 [屬性>步驟>步驟 2>編輯]。

    4. 在 [ 作業步驟屬性 ] 視窗中,於命令結尾新增 -NativeBcpFileFormatVersion 100 ,然後選取 [ 確定 ] 以儲存變更。

    5. 套用最新的 Microsoft OLE DB 驅動程式

      • 如果散發代理程式(或合併代理程式)針對發送訂閱執行,請在散發者伺服器上套用它。

      • 如果散發代理程式(或合併代理程式)針對提取訂閱執行,請在訂閱者伺服器上套用它。

    6. 在 C:\Program Files\Microsoft SQL Server\150\COM 資料夾中重新命名msoledbsql.dll檔案

      • 如果是發送訂閱,請重新命名散發者伺服器上的資料夾中的檔案。

      • 如果是提取訂閱,請重新命名訂閱者伺服器上的資料夾中的檔案。

    7. C:\Windows\System32\ 資料夾複製msoledbsql.dll檔案,並將其貼到 C:\Program Files\Microsoft SQL Server\150\COM 資料夾。

  • 若要解決此問題以進行合併式複寫,請遵循下列步驟:

    1. 在散發者伺服器上套用 SQL Server 2019 累積更新 15 (CU15) 或更新版本。

    2. 請遵循套用至事務複製問題的所有步驟。