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

Откуда:
Сообщений: 162
У меня есть:
1. БД 1. база с поврежденной схемой - в Мендмент студии таблицы не открываются и не видны.
2. БД 2. Есть эта же база недельной давности
3. БД 3. Новая чистая база, в которую хочу на основании структуры базы недельной давности залить данные из базы с поврежденной схемы

Алгоритм у меня следующий:

1. в курсор выбираю названия всех таблиц из БД 2.
2. Далее в цикле по курсору формирую динамический запрос а-ля
           set @script = 'select * into [new].[dbo].[_Acc6]
				from [crashed].[dbo].[_Acc6]'
				
execute sp_executesql @script

Вроде вставляется, но некоторые таблицы, видно, повреждены окончательно, и скрипт вылетает в ошибку.

В итоге в select для курсора есть условие

where [name] not in (список поврежденных таблиц)

Вопрос: у меня таблиц больше 1000. Как мне сделать так, чтобы скрипт поврежденные таблицы пропускал и шел дальше?

Попробовал так

begin try
 execute sp_executesql @script
end try
begin catch 
   fetch next from .........
end catch 

   fetch next from .........
end cactch


, всё равно вылетает в ошибку....
22 дек 09, 08:38    [8099128]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
rinat.m,

а если так?

print @script
print 'go'
22 дек 09, 10:36    [8099621]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
rinat.m
1. БД 1. база с поврежденной схемой - в Мендмент студии таблицы не открываются и не видны.
Это единственная неполадка?
Клиентские приложения пользователей с этой БД работают без проблем?
Может, это какой-то баг Management Studio?
22 дек 09, 10:51    [8099736]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
M0us
Member

Откуда: Moscow
Сообщений: 883
То, что SSMS что-то не открывает - не говорит о "поврежденной схеме".

И скрипты на заливку руками в большой БД так просто не сделать - ибо FK есть и identity помешают.

Что конкретно не работает в SSMS?
22 дек 09, 11:00    [8099851]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
rinat.m
Member

Откуда:
Сообщений: 162
2 iSestrin

а что мне это даст? - мне же надо пропустить просто эту таблицу и идти дальше

2 Паганель

нет.
select * from sysobjects
возвращает

Msg 211, Level 23, State 51, Line 1
Possible schema corruption. Run DBCC CHECKCATALOG.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.

2 M0us

в этой БД не отображается список пользовательских таблиц + то, что написал Паганелю
то, что так просто не написать, это точно, но здесь нет связей между таблицами, есть просто ключи.
22 дек 09, 11:13    [8099996]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Рекомендую обратиться к Вашему DBA и уведомить его о том, что
rinat.m
select * from sysobjects
возвращает
Msg 211, Level 23, State 51, Line 1
Possible schema corruption. Run DBCC CHECKCATALOG.
Возможно, он решит проблему "испорченности" каталога, и никакие данные никуда переливать не придется...
22 дек 09, 11:18    [8100041]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
rinat.m
у меня таблиц больше 1000
rinat.m
нет связей между таблицами
Это наверное какое-то самодельное секционирование, и все таблицы однотипны
Иначе как-то слабо верится, что это правда
22 дек 09, 11:21    [8100060]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
rinat.m
Member

Откуда:
Сообщений: 162
Паганель
rinat.m
у меня таблиц больше 1000
rinat.m
нет связей между таблицами
Это наверное какое-то самодельное секционирование, и все таблицы однотипны
Иначе как-то слабо верится, что это правда


DBA у нас нету. Подскажите пути решения.
саму базу не знаю, но работает она с 1С
22 дек 09, 11:37    [8100223]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
M0us
Member

Откуда: Moscow
Сообщений: 883
как вариант - попробуйте через Master Import Export" залить данные в другую чистую новую БД.
И на ней сделать select * from sys.objects.
22 дек 09, 12:53    [8101064]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
rinat.m
Member

Откуда:
Сообщений: 162
M0us
как вариант - попробуйте через Master Import Export" залить данные в другую чистую новую БД.
И на ней сделать select * from sys.objects.


увы тоже не работает пишет то, что в аттаче.

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

К сообщению приложен файл. Размер - 0Kb
22 дек 09, 13:24    [8101339]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
M0us
Member

Откуда: Moscow
Сообщений: 883
iSestrin
rinat.m,
а если так?
print @script
print 'go'


Тогда +1 этому ответу за "GO".
Дальше нужно "копать" на месте или обратиться в http://social.msdn.microsoft.com/Forums/en-US/category/sqlserver
22 дек 09, 14:23    [8101927]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании скрипта  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 578
Так сервак на ошибку советует вам: Run DBCC CHECKCATALOG

Сделайте копию базы и попробуйте командами DBCC проверить базу, наверняка будут видны ошибки, а также можно будет попробовать их восстановить.

Удачи.
22 дек 09, 22:19    [8104533]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить