Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
SQLServer
Error messages:
The process could not bulk copy into table '"dbo"."tableName"'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20037)
Get help: http://help/MSSQL_REPL20037
Field size too large
To obtain an error file with details on the errors encountered when initializing the subscribing table, execute the bcp command that appears below. Consult the BOL for more information on the bcp utility and its supported options. (Source: MSSQLServer, Error number: 20253)
Get help: http://help/20253
bcp "targetDatabaseName"."dbo"."tableName" in "\\...\replicationfolder\...\20131114034443\tableName_3.bcp" -e "errorfile" -t"\n<x$3>\n" -r"\n<,@g>\n" -m10000 -... -T -w (Source: MSSQLServer,)
Get help: http://help/20253


При выполнении bcp команды в errorfile пусто

да и в окошке выглядит так

SQLServer
Starting copy...

0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 1



При попытке сравнить таблицы таким скриптом

with
cte1 as
(
select c.*
  from targetDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableName'
),

cte2 as
(
select c.*
  from sourceDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableName'
)

select *
  from cte1 c1
  full
  join cte2 c2
    on c1.COLUMN_NAME = c2.COLUMN_NAME
  
 where (c1.COLUMN_NAME is null or c2.COLUMN_NAME is null )
   or (c1.ORDINAL_POSITION <> c2.ORDINAL_POSITION)
   or (c1.DATA_TYPE <> c2.DATA_TYPE)
   or c1.CHARACTER_MAXIMUM_LENGTH <> c2.CHARACTER_MAXIMUM_LENGTH
   or c1.IS_NULLABLE <> c2.IS_NULLABLE


Ничего не выдаёт

А вот

with
cte1 as
(
select c.*
  from targetDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableName'
),

cte2 as
(
select c.*
  from sourceDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableName'
)
,
cteSum as (
select TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, CHARACTER_SET_NAME, COLLATION_CATALOG, COLLATION_SCHEMA, COLLATION_NAME, DOMAIN_CATALOG, DOMAIN_SCHEMA, DOMAIN_NAME
  from cte1 c1

union

select TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, CHARACTER_SET_NAME, COLLATION_CATALOG, COLLATION_SCHEMA, COLLATION_NAME, DOMAIN_CATALOG, DOMAIN_SCHEMA, DOMAIN_NAME
  from cte2 c2
)

select c.COLUMN_NAME, COUNT(1) as cnt
  from cteSum c
group by c.COLUMN_NAME
having COUNT(1) > 1

/*  
select *
  from cteSum c  
order by c.COLUMN_NAME
*/


выдаёт только старые колонки, а проблема появилась после добавления новой колонки и измнения старой, причём разница только в default constraint-ах на базе-источнике. Собственно с этой разницей и раньше работаол

Когда начинаю гуглить то нахожу
Похожее на 2005ом
а у меня

print @@version
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4286.0 (X64)
May 29 2013 15:04:02
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


Иногда нахожу подобное для других типов репликации.

Но внятного решения найти не могу, хотя часто коменты сводятся к "Пересоздать реплицацию"
(реиницилизацию и т. п. я уже пробовал).

Заранее спасибо за ответы.
14 ноя 13, 14:50    [15128762]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
А что вернет
with
cte1 as
(
select c.*
  from targetDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableName'
),

cte2 as
(
select c.*
  from sourceDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableName'
)
(select * from cte1 except select * from cte2)
union all
(select * from cte2 except select * from cte1)
?
14 ноя 13, 15:12    [15129015]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
invm,

Так соответствено все строчки.
Я такой запрос спмотрел (только с order by) когда колонки сравнивал визуально (ну только в дефолтных констрейтах разницу и узрел)
14 ноя 13, 15:41    [15129267]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
Если структура таблиц полностью совпадает, запрос вернет пустой результат.
14 ноя 13, 15:45    [15129303]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
invm,

не заметил Except

with
cte1 as
(
select TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, CHARACTER_SET_NAME, COLLATION_CATALOG, COLLATION_SCHEMA, COLLATION_NAME, DOMAIN_CATALOG, DOMAIN_SCHEMA, DOMAIN_NAME
  from targetDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableNAme'
),

cte2 as
(
select TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, CHARACTER_SET_NAME, COLLATION_CATALOG, COLLATION_SCHEMA, COLLATION_NAME, DOMAIN_CATALOG, DOMAIN_SCHEMA, DOMAIN_NAME
  from sourceDB.INFORMATION_SCHEMA.COLUMNS c
 where c.TABLE_NAME = 'tableNAme'
)
(select * from cte1 except select * from cte2)
union all
(select * from cte2 except select * from cte1)


Выдала два раза те колонки которые отличаются ТОЛЬКО наличем Default Constraint
14 ноя 13, 16:21    [15129672]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
Таблица на подписчике пересоздается при применении снимка?
14 ноя 13, 16:54    [15129941]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
invm,

Нет, пересоздаются строчки удаляются по фильтру. На подписчике сейчас пусто.
Replicate schema changes стоит в FALSE, но уже бывали проблемы которые недолжны были бы быть (с зависшии транзакцими после ALTER TABLE).
14 ноя 13, 17:28    [15130205]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Отбой!

По какой-то причине не все колонки этой таблицы были включены в статью.
Я это обнаружи когда пересоздал репликацию из сгенерированного SSMS скрипта и увидел ту же ошибку, а потом скриптом с SVN-а и ошибки не увидел.

Увидел в сгенерированном скрипте добавление "по колонкам". Удивился.
14 ноя 13, 18:12    [15130492]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
Чудес не бывает. Данная ошибка возникает, если в статье не совпадает порядок столбцов на издателе и подписчике, либо недостаточна ширина каких-то столбцов на подписчике. По крайней мере, мне другие не встречались.
14 ноя 13, 18:15    [15130524]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Есть ещё "не тестовые базы".
После тех же альтер скриптов возникла та же ошибка.
Открываю статьи репликации, смотрю что последняя колонка не выбрана

Скрипты обновления были

ALTER TABLE table1 ADD column1 VARCHAR (50) NULL;
GO
ALTER TABLE table1_history ADD column1 VARCHAR (50) NULL;
GO
ALTER TABLE table1 ALTER COLUMN column2 CHAR(2) NULL;
GO
ALTER TABLE table1_history ALTER COLUMN column2  VARCHAR(2) NULL;
GO


Может из-за alter длины поля, я ХЗ.
14 ноя 13, 18:22    [15130556]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
NIIIK,

Если честно, то я вас не пойму: то таблицы различаются только дефолтным значением для столбца, то есть какие-то обновления схемы на издателе при выключенном replicate ddl. А в реальности что?
14 ноя 13, 18:49    [15130697]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
эти обновления на издателе и подписчике были сделаны не мной, но одновременно (сразу друг за другом) и схемы не отличались.
Таблицы были одинаковые

В изначальном скрипте создания репликации для таблицы было так

exec sp_addarticle @publication = @PublName4, @article = N'tableName', @source_owner = N'dbo', @source_object = N'tableName', @type = N'logbased', @description = N'', @creation_script = null, @pre_creation_cmd = N'delete', @schema_option = 0x000000000003100D, @identityrangemanagementoption = N'manual', @destination_table = N'tableNAme', @destination_owner = N'dbo', @vertical_partition = N'false', @filter_clause = @Filter
exec sp_articlefilter @publication = @PublName4, @article = N'tableName', @filter_name = N'FLTR_tableName', @filter_clause = @Filter, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1
exec sp_articleview @publication = @PublName4, @article = N'tableName', @view_name = N'SYNC_tableName', @filter_clause = @Filter, @force_invalidate_snapshot = 1, @force_reinit_subscription = 1


(и это скрипт с которым заработало).

Скрипт который сгенерировала SSMS (кстати он ещё кое-чем отличается от изначального когда генерится ССМС, но это больше за шедулером и запуском джоба связано).

А то что генерировалось ССМС.

exec sp_addarticle @publication = N'PublicationName',
@article = N'tableName', @source_owner = N'dbo', @source_object = N'tableName', @type = N'logbased',
@description = N'', @creation_script = N'', @pre_creation_cmd = N'delete',
@schema_option = 0x000000000003100D, @identityrangemanagementoption = N'manual',
@destination_table = N'tableName', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'true', @ins_cmd = N'SQL', @del_cmd = N'SQL', @upd_cmd = N'SQL', 

@filter_clause = N' ffff IN (select c.fff from targetDB.dbo.tttt c join targetDB.dbo.filterTable ca ON c.yyy = ca.yyy where ca.yyy = ''yyy'') '

-- Adding the article's partition column(s)
exec sp_articlecolumn @publication = N'PublicationName', @article = N'tableName', @column = N'pk', @operation = N'add', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1
exec sp_articlecolumn @publication = N'PublicationName', @article = N'tableName', @column = N'field1', @operation = N'add', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1
exec sp_articlecolumn @publication = N'PublicationName', @article = N'tableName', @column = N'field2', @operation = N'add', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1
exec sp_articlecolumn @publication = N'PublicationName', @article = N'tableName', @column = N'field3', @operation = N'add', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1
...



При удалении и запуске скрипта "задуманного", а не "сгенерированного" - всё заработало.
14 ноя 13, 19:16    [15130891]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Теперь такая ситуация что после любого добавления колонки мне приходится вручную добавлять её в публикации в репликацию.
Изначально в статью добавлена ВСЯ таблица.
Это нормальное явление при replicate schema changes = false?
20 ноя 13, 22:39    [15165014]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
replicate schema changes для репликации снимком - фикция.
Опишите уже наконец решаемую задачу. Может найдется другой способ решения.
20 ноя 13, 23:07    [15165125]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
сейчас банальная задача - минимизировать всплывающие ошибки/проблемы после изменения структуры таблиц в репликации.

Сначала всело куча открытых транзакций (ну одна, но частые случае) и рос лог базы данных.
Потом я поставил это свойство - случаев стало меньше, но остались.
Теперь ещё после того как изменения сделают на обои таблицах (издатель/подписчик) появляется проблема с репликацией. Решаемая методом "чекнуть чекбокс для новой колонки в свойствах публикации".
20 ноя 13, 23:42    [15165256]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
NIIIK,

Это не описание решаемой задачи.
Почему была выбрана репликация снимком? Какой объем данных необходимо передавать? С какой частотой?
20 ноя 13, 23:54    [15165320]     Ответить | Цитировать Сообщить модератору
 Re: Репликация Shanpshot непонятные проблемы Error number: 20253  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
это скорее постановка задачи мне.
"поддерживать работу того что было сделано".
Почему там была выбрана репликация вообще - большой вопрос )
20 ноя 13, 23:58    [15165345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить