共用方式為


ASCII 函式會在發行者和訂閱者資料庫數據表中傳回不同的結果

適用於:SQL Server 2019 年

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

徵狀

請試想下列案例:

  • 您在 2019 SQL Server 使用事務或合併式複寫。

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

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

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

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

    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. 請遵循套用至事務複製問題的所有步驟。