Вопрос

Когда я запускаю этот скрипт для поиска определенного текста в 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 потерпеть неудачу во время снимка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top