Что такое syncobj в SQL Server - PullRequest
8 голосов
/ 26 мая 2010

Когда я запускаю этот скрипт для поиска определенного текста в sys.columns, и я получаю много "dbo.syncobj_0x3934443438443332" подобных строк.

SELECT c.name, s.name + '.' + o.name
FROM sys.columns c
INNER JOIN sys.objects  o ON c.object_id=o.object_id
INNER JOIN sys.schemas  s ON o.schema_id=s.schema_id
WHERE c.name LIKE '%text%'

Если я правильно понял, это объекты репликации. Это так? Могу ли я просто выбросить их из моего запроса, как o.name NOT LIKE '%syncobj%' или есть другой способ?

Спасибо.

Ответы [ 2 ]

12 голосов
/ 26 мая 2010

Я нашел решение. Не знает, лучший он или нет.

SELECT c.name, s.name + '.' + o.name
FROM sys.columns c
   INNER JOIN sys.objects  o ON c.object_id=o.object_id
   INNER JOIN sys.schemas  s ON o.schema_id=s.schema_id
WHERE c.name LIKE '%text%' AND o.type = 'U'

Результат в порядке сейчас. Как я уже сказал, объекты syncobj являются объектами репликации и не имеют для нас значения. Они используются только для целей репликации.

http://www.developmentnow.com/g/114_2007_12_0_0_443938/syncobj-views.htm

РЕДАКТИРОВАТЬ:

Забыл добавить, что syncobj хранятся в БД в виде Views, поэтому, если вам нужен список представлений, вам, вероятно, придется игнорировать их, как я сделал в моем вопросе.

При проверке различий между представлениями syncobj и my, единственная разница - это столбец is_ms_shipped . Для syncobj это 1, для других 0. Это означает, что представления syncobj создаются системой.

P.S. Я подожду некоторое время, и если никто не даст другого ответа, я приму мой.

2 голосов
/ 04 апреля 2014

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

Вот пример

- Добавление объекта синхронизации статьи exec sp_articleview @publication = N'publication_data ', @article = N'tablename', @view_name = N'syncobj_0x4239373642443436 ', @filter_clause = N' ', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1 GO

P.S. Недавно у меня возникла проблема, когда я отбросил репликацию, она не удалялась, и вам пришлось вручную отбрасывать системные представления, чтобы повторно использовать сценарий репликации. Предоставление сообщения об ошибке

Сообщение 2714, Уровень 16, Состояние 3: уже существует объект с именем 'syncobj_0x3437324238353830' в базе данных.

Что привело к сбою bcp во время снимка.

...