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

Откуда: из славного города Мурома
Сообщений: 11
Привет всем. Не поможет ли кто в следующем вопросе.

У меня есть большой SQL-скрипт, который поставляется пользователю в составе дистрибутива для установки базы. Этот скрипт генерится не из EM, а туловиной, которая называется CAST Release Builder. www.castsoftware.com

При запуске этого файла для некоторых процедур выдается сообщение (точно не помню) cannot add row to sysdepends. the procedure will still be created. Смысл и причина понятны - процедура (1) содержит exec другой процедуры (2), которой еще нет.

Запись в sysdepends будет добавлена, при вызове процедуры (1). Но может возникнуть и ошибка, если (2) все-таки не существует.

Примерно аналогичная ситуация: создайте view1 на table1. Потом сделайте drop table table1. View1 по прежнему живет и ошибка будет выявлена только при обращении к этому View1.

Вопрос качества. Как проверить, что база корректа в том смысле, что все процедуры, вьюхи ссылаются на существующие объекты?
22 дек 03, 12:02    [469091]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Привет, Vo! :-)

Надо проверить, что все процедуры и таблицы существуют. Глянь, как это делает 1с в момент запуска. :-)
22 дек 03, 13:13    [469254]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
Crimean
Member

Откуда:
Сообщений: 13148
А для непосвященный в 1С - как она это делает? Анализом системных объектов или по списку "своих" объектов?
22 дек 03, 13:28    [469281]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
aag
Member

Откуда: Москва
Сообщений: 1955
Можно попробовать прогнать скрипт повторно -ошибок быть не должно.
Nobody faults but mine... (LZ)
22 дек 03, 13:33    [469292]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Именно по "списку".

1.Для проверки таблиц - sp_tables (для каждой таблицы вызов)
2.Для проверки полей - sp_columns (для каждой таблицы вызов)
3.Для проверки хп - sp_stored_procedures (для каждой хп вызов)
22 дек 03, 13:49    [469323]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
немного запамятовал ... возможно такие проверки есть в bpa?
22 дек 03, 14:16    [469379]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
Vo!
Member

Откуда: из славного города Мурома
Сообщений: 11
Не то!

База данных хранится в виде *.pro, *.tbl и т.д. файлов. Предопределенные данные (системные данные в терминах продукта) лежат в *.txt файлах (закачиваются/выкачиваются BCP)
Все это лежит в разных местах (в разных каталогах) и управляется системой контроля версий (Rational ClearCase). В один прекрасный день преинтегратор делает build продукта. При этом он делает merge файлов (если одни и те же файлы менялись разными девелоперами и лежат в разных ветках ClearCase).

Всевозможными скриптами на основе всевозможных конфигурационных файлов (которые, кстати, имеют много версий и тоже лежат в ClearCase) все это заливается в SQL сервер на приентеграционной машине и строится база.

Далее продуктом CAST Release Builder строится один большой SQL файл - скрипт всей базы, либо SQL-файл, описывающий разницу между данным билдом и предыдущим - получается patch.

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

Вот и хотелось бы проверить целостность базы чем-нибудь вроде DBCC CHECKDB
22 дек 03, 14:39    [469453]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
Вот и хотелось бы проверить целостность базы чем-нибудь вроде DBCC CHECKDB


DBCC CHECKDB проверяет физическую целостность базы, а не логическую. А чтоб проверить, надо сравнить с чем-нибудь. Т.е. иметь отдельно список объектов и проверять сгенеренную структуру новой бд по этому списку, включая таблицы (вьюхи), колонки таблиц (вьюх), индексы и хп. Тока такой подход даст 100% гарантию. Ну при условии, что исходный список точен на 100%.
22 дек 03, 14:45    [469464]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
>Не то! <
хм, проверю обязательно ... но в любом случае полезно другие проблемы выявить, кроме названных...
22 дек 03, 14:46    [469465]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
действительно в bpa этого нет, а на самом деле: многократное создание должно приводить только к ошибке , что такой объект уже есть , и ни к какой другой ... чем не подходит? - это же проверка...
22 дек 03, 17:27    [469804]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
Vo!
Member

Откуда: из славного города Мурома
Сообщений: 11
Согласен! Прогнать скрипт еще раз - это решение!
скрипт имеет вид

if exists(..) drop

create


Поэтому при повторном исполнении не будет сообщений типа "Cannot add row to sysdepends"

Спасибо
26 дек 03, 13:26    [475471]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
зато будет что-то типа object is already exist
26 дек 03, 14:02    [475533]     Ответить | Цитировать Сообщить модератору
 Re: sysdepends и как проверить все связи  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Надо свою загружалку делать. И есть объект есть, то drop / create менять на alter.
26 дек 03, 14:19    [475584]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить