Когда я запускаю этот скрипт для поиска конкретного текста в 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's - это объекты репликации, и они не имеют для нас никакого значения. Они используются только для целей репликации.
http://www.developmentnow.com/g/114_2007_12_0_0_443938/syncobj-views.htm
EDIT:
Забыл добавить, syncobj's хранятся в DB как Views, так что если вам нужен список представлений, вам, вероятно, придется игнорировать их, как я сделал в своем вопросе.
При проверке разницы между syncobj's и моими представлениями, единственное различие - is_ms_shipped колонка. Для syncobj это 1, для других 0. Это означает, что представления syncobj создаются системой.
P.S. Я подожду некоторое время и если никто не даст другого ответа, я приму свой.