diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/db/mssql/MsSqlTriggerTemplate.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/db/mssql/MsSqlTriggerTemplate.java index c3615f5b3b..deb2228a07 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/db/mssql/MsSqlTriggerTemplate.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/db/mssql/MsSqlTriggerTemplate.java @@ -269,7 +269,15 @@ protected String getSourceTablePrefix(TriggerHistory triggerHistory) { } @Override - protected String getColumnSize(Column column) { + protected String getColumnSize(Table table, Column column) { + int totalSize = 0; + for (Column c : table.getColumns()) { + totalSize += c.getSizeAsInt(); + } + if (castToNVARCHAR && totalSize > 8000) { + return "max"; + } + if (castToNVARCHAR && column.getSizeAsInt() > 4000) { return "max"; } diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java index 24f5aeddec..5cbf1e34ca 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java @@ -863,8 +863,11 @@ else if (column.getJdbcTypeName() != null String formattedColumnText = FormatUtils.replace("columnName", String.format("%s%s", columnPrefix, column.getName()), templateToUse); + Table sourceTable = symmetricDialect.getPlatform().getTableFromCache(trigger.getSourceCatalogName(), + trigger.getSourceSchemaName(), trigger.getSourceTableName(), false); + formattedColumnText = FormatUtils.replace("columnSize", - getColumnSize(column), formattedColumnText); + getColumnSize(sourceTable, column), formattedColumnText); formattedColumnText = FormatUtils.replace("masterCollation", symmetricDialect.getMasterCollation(), formattedColumnText); @@ -883,7 +886,7 @@ else if (column.getJdbcTypeName() != null } - protected String getColumnSize(Column column) { + protected String getColumnSize(Table table, Column column) { return column.getSize(); }