Что такое Syncobj в SQL Server
-
04-10-2019 - |
Вопрос
Когда я запускаю этот скрипт для поиска определенного текста в 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%'
Или есть другой путь?
Спасибо.
Решение
Я нашел решение. Не знает, если это лучший или нет.
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's хранятся в БД в качестве представлений, поэтому, если вам нужен список представлений, вам, вероятно, понадобится игнорировать их, как и в моем вопросе.
Во время проверки разницы между Syncobj's и моими взглядами, единственная разница iS_ms_shapsed. столбец. Для Syncobj это 1, для других 0. Это означает, что представления Syncobj создаются системой.
PS Я буду ждать некоторое время, и если никто не дает еще один ответ, я приму мой.
Другие советы
Когда вы создаете репликацию, которая не включает в себя все поля или другие изменения метаданных с исходной таблицы. Если вы сделаете генеративный скрипт из публикации, он покажет вам, как оно создано (см. Ниже). Вид предоставляет объект для генерации экстрактов 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 Перейти
PS Я недавно имел проблему, когда я бросил репликацию, он не смог удалить их, а затем вы должны вручную сбросить системные представления, чтобы повторно использовать сценарий репликации. Давая сообщение об ошибке
MSG 2714, Уровень 16, Состояние 3: Уже есть объект с именем «Syncobj_0x3437324238353830» в базе данных.
Который вызвал BCP потерпеть неудачу во время снимка.