SQL Server订阅发布是否会改变nvarchar数值

shawn xiao 40 信誉分
2024-09-09T03:27:54.6466667+00:00

因为业务需求我们需要报nvarchar改为max,如下:
ALTER TABLE dbo.bcrf apply audit n ALTER COLUMN APPROVE OPINION nvarchar(MAX)

NULL;

但是使用mssql 订阅发布到备库后发现该参数会变为非max值,因此需要确认问题有两个:

  1. 在mssql看nvarchar值与在第三方工具dbeaver看到的显示不一致
  2. mssql订阅发布模式是否会改变nvarchar的值

这边做了以下测试,nvarchar已确实修改为MAX,然后启动订阅发布后,应用会出现以下报错:

### Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 要复制的 LOB 数据的长度(488928)超出了配置的最大值 65536。请使用存储过程 sp_configure 为 max text repl size 选项(默认值为 65536)增加配置的最大值。配置值为 -1 表示无限制,其他值表示由数据类型施加限制。 ### The error may involve com.ylink.hwss.bcrf.modules.report.dao.BcrfBankFileDao.insert-Inline ### The error occurred while setting parameters ### SQL: INSERT INTO bcrf_bank_file ( FILE_NO, FILE_CONT, INSERT_TIME, FILE_NAME, FILE_FMT, FILE_LANG ) VALUES ( ?, ?, ?, ?, ?, ? ) ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 要复制的 LOB 数据的长度(488928)超出了配置的最大值 65536。请使用存储过程 sp_configure 为 max text repl size 选项(默认值为 65536)增加配置的最大值。配置值为 -1 表示无限制,其他值表示由数据类型施加限制。 ; uncategorized SQLException for SQL []; SQL state [S0001]; error code [7139]; 要复制的 LOB 数据的长度(488928)超出了配置的最大值 65536。请使用存储过程 sp_configure 为 max text repl size 选项(默认值为 65536)增加配置的最大值。配置值为 -1 表示无限制,其他值表示由数据类型施加限制。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 要复制的 LOB 数据的长度(488928)超出了配置的最大值 65536。请使用存储过程 sp_configure 为 max text repl size 选项(默认值为 65536)增加配置的最大值。配置值为 -1 表示无限制,其他值表示由数据类型施加限制。

SQL Server
SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
169 个问题
{count} 票

接受的答案
  1. LiHongMSFT-4306 28,041 信誉分
    2024-09-09T08:21:29.6833333+00:00

    nvarchar已经配置为MAX,然后将数据库订阅发布开启后,会出现以下报错:

    虽然是设置为max,但是并不意味着无限制长度,而是有一个默认的最大值是65536 个字节。根据报错来看,存在一个488928长度的数据,超过了这个默认的最大值。

    如果想要解除这个限制的话,就需要配置 max text repl size 为 -1。

    参考这个文档:配置 max text repl size(服务器配置选项)


    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。

    1 个人认为此答案很有帮助。
    0 个注释 无注释

1 个其他答案

排序依据: 非常有帮助
  1. LiHongMSFT-4306 28,041 信誉分
    2024-09-09T06:15:34.8333333+00:00

    一般来讲,SQL Server 的订阅发布模式是不会自动更改数据类型的。

    如果发布和订阅服务器的字符集或排序规则不同,可能会出现字符编码的问题,但这通常是由于配置错误或不匹配造成的,而不是复制过程本身。

    我没有用过dbeaver,所以不太确定是否是第三方产品导致的。


    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。


你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。