Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
o-o
Guest
Руслан Дамирович
aptom
а как сделать курсор по таблицам

Оставьте курсоры некрофилам от SQL
sys.tables / sys.schemas

при чем тут некрофилы?
тут не транкейты здоровых таблиц из соседней соседней темы,
тут через раз селект может падать.
вменяемый девелопер пойдет курсором по sys.tables,
нечитаемые таблички по ходу дела сложит в таблицу попорченных.
или вы уйму времени сэкономите, если нагенерите кучу селектов,
а потом будете глазками выискивать,
на каком стэйтменте из сгенеренных упал очередной select into?
8 ноя 16, 13:24    [19870087]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
Руслан Дамирович,

мне нужны только таблицы в дереве tables откуда можно взять или как отобрать ?
8 ноя 16, 13:24    [19870090]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
aptom,
все понял
туплю капец
8 ноя 16, 13:27    [19870108]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
(0 row(s) affected)
select * into uppcr.dbo._AccumRgT22986 from upps.dbo._AccumRgT22986
Msg 605, Level 21, State 3, Line 1
Attempt to fetch logical page (1:5439963) in database 5 failed. It belongs to allocation unit 72058131327090688 not to 72058131208667136.


умерла так умерла называется
8 ноя 16, 13:34    [19870160]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
aptom
aptom,
все понял
туплю капец

DECLARE 
   @sql VARCHAR(MAX),
   @tablename VARCHAR(MAX)

DECLARE droptable CURSOR FOR 
  SELECT 
    fpath = QUOTENAME( t.name ) + '.' + QUOTENAME( s.name )
  FROM 
    sys.tables t
    INNER JOIN sys.schemas s ON (
          s.schema_id = t.schema_id )
;
OPEN droptable
FETCH NEXT FROM droptable INTO @tablename
WHILE @@FETCH_STATUS = 0 
BEGIN
  SET @sql = 'SELECT * INTO uppcr.'+ @tablename +' FROM upps.'+ @tablename
  PRINT @sql
  EXEC (@sql)
  FETCH NEXT FROM droptable INTO @tablename
END
CLOSE droptable
DEALLOCATE droptable
8 ноя 16, 13:34    [19870164]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
Руслан Дамирович,

в чем тут фишка и какой нужно добавить код что бы пропустить мертвые таблицы ???
8 ноя 16, 13:48    [19870268]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aptom
Руслан Дамирович,

в чем тут фишка и какой нужно добавить код что бы пропустить мертвые таблицы ???


BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
[ { sql_statement | statement_block } ]
END CATCH
[ ; ]
8 ноя 16, 13:49    [19870276]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4271
Nitro_Junkie
SQL2008
пропущено...

А в Management Studio база подключается?


Вот "люблю" за это MS SQL.

На том же Postgres'е у нас один раз админ на продакшне диск с самыми большими таблицами отмонтировал. И ничего, постгрес поднялся без этих таблиц, мы их пересоздали, запустили всех работать, и параллельно начали востанавливать таблицы из бэкапа \ других сохранившихся данных. В итоге простоя как таковой был полчаса - час не больше. (база при этом в сумме под 400 гб)

Или был клиент у которого виртуалка без предупреждения ложилась в произвольные моменты времени пару раз в день целый месяц. Тока один раз нарушилась структура нескольких таблиц, после чего руками (правда и немного шамански) нашли битые записи удалили их, и "восстановили" из бекапа. Downtime'а как такового не было, чисто ошибки у пользователей, которые работали с этими данными.

А с MS SQL всегда гемор еще тот :(


Ваши большие таблицы имели какие-либо связи с неотключенными данными?
8 ноя 16, 14:01    [19870324]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
SQL2008,
а кто ж его знает
8 ноя 16, 14:05    [19870346]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
o-o
Guest
aptom
SQL2008,
а кто ж его знает

aptom,
SQL2008 не с вами общается, а с восхвалятелем альтернативных СУБД,
не заботящихся о целостности данных (если это вообще правда)
8 ноя 16, 14:11    [19870370]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1078
SQL2008
Nitro_Junkie
пропущено...


Вот "люблю" за это MS SQL.

На том же Postgres'е у нас один раз админ на продакшне диск с самыми большими таблицами отмонтировал. И ничего, постгрес поднялся без этих таблиц, мы их пересоздали, запустили всех работать, и параллельно начали востанавливать таблицы из бэкапа \ других сохранившихся данных. В итоге простоя как таковой был полчаса - час не больше. (база при этом в сумме под 400 гб)

Или был клиент у которого виртуалка без предупреждения ложилась в произвольные моменты времени пару раз в день целый месяц. Тока один раз нарушилась структура нескольких таблиц, после чего руками (правда и немного шамански) нашли битые записи удалили их, и "восстановили" из бекапа. Downtime'а как такового не было, чисто ошибки у пользователей, которые работали с этими данными.

А с MS SQL всегда гемор еще тот :(


Ваши большие таблицы имели какие-либо связи с неотключенными данными?


Нет, просто так лежали... Конечно имели, другой вопрос, что эти связи вообще не дело СУБД, с учетом того, что кроме foreign key и логического условия на поля в одной таблице других ограничений \ связей СУБД не поддерживают...
8 ноя 16, 14:52    [19870573]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3692
Я двое суток разбирался с базой 1C, когда она упала.

В итоге так как стандартные варианты не прошли, сделали так:
1) Бекап сломанной БД
2) Создали пустую БД 1С
3) Внешней утилитой от стороннего вендора, не помню сейчас как называется, прошлись на физическом уровне по файлу БД, восстановили сколько смогли.
4) В 1С есть список объектов и наименования таблиц, которые хранят эти записи. Пробежались по ним, руками скрипты по перезаливке данных написали (ROWVERSION естественно не копировали)
5) Далее select count по каждой таблице в восстановленной БД и смотрим, какие еще непустые таблицы не трогали. И руками из них перезаливали. Кстати, не так страшно, как кажется. Там таблиц несколько тысяч, но эти таблицы примерно одной и той же структуры (в части служебных полей), поэтому можно наваять динамические скрипты по заливке данных.
6) Потом взяли бэкап сломанной БД, и повторили действия из пункта 5 для тех записей, которые почему то отсутствовали в восстановленной БД.

В общем, геммороя много, нужно настраивать ежедневный бэкап, чтобы не возникало проблем.
8 ноя 16, 15:33    [19870777]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
_bob
Member

Откуда: Москва
Сообщений: 1654
aptom,

я поднимал такие трупы

начинал с курсора по всем табличкам, в курсоре
print tablename; select count() from tablename, на битой таблице вываливаемся в ошибку, далее запускаем курсор начиная с имени следующей таблицы

таким образом быстро находим битые таблицы

далее в зависимости от того, какие таблицы побиты
8 ноя 16, 15:42    [19870836]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
_bob
Member

Откуда: Москва
Сообщений: 1654
если побиты регистры (шанс > 95%) - я бы взял старый бэкап и в него перегнал бы документы из битой базы

еще важно: кроме новой базы у вас должна быть последняя копия конфы или в идеале хранилище. имея актуальную конфу нужно создать пустую базу с актуальной конфой и сравнить эту БД с битой БД и с последним бэкапом

может оказаться достаточно создать в битой БД недостающие объекты из новой пустой бд, полученной из конфы
8 ноя 16, 15:51    [19870888]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
TaPaK,


пытаюсь прогнать через попытку

The query has exceeded the maximum number of result sets that can be displayed in the results grid. Only the first 100 result sets are displayed in the grid.
8 ноя 16, 16:54    [19871269]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
DECLARE @sql VARCHAR(MAX) ,
@tablename VARCHAR(MAX)

DECLARE droptable CURSOR FOR
SELECT name
FROM upps.sys.tables
where
name<>'_AccumRgT22986'and
name<>'_AccumRg30738' and
name<>'_AccumRgT23011' and
name<>'_AccumRg28109' and
name<>'_AccumRgT22208' and
name<>'_AccumRgT22230' and
name<>'_Document552_VT15444' and
name<>'_AccRg1585' and
name<>'_AccRgAT21606' and
name<>'_AccRgED1609' and
name<>'_AccRgAT31637' and
name<>'_AccumRg32234' and
name<>'_AccRgED1639' and
name<>'_Document28327_VT29460' and
name<>'_AccumRgT32243' and
name<>'_Seq23349' and
name<>'_AccumRgT22343' and
name<>'_AccumRgT21395' and
name<>'_AccumRgT22366' and
name<>'_AccumRgT22464' and
name<>'_Document365' and
name<>'_AccumRgT21819' and
name<>'_AccumRgT21829' and
name<>'_Document24413_VT24596' and
name<>'_Document343_VT6558' and
name<>'_AccumRg21238'


OPEN droptable
FETCH NEXT FROM droptable
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'select count(*) from upps.dbo.'+ @tablename
PRINT @sql
begin try
EXEC (@sql)
end try
BEGIN CATCH
PRINT ERROR_MESSAGE();
END CATCH;

FETCH NEXT
FROM droptable
INTO @tablename
END

CLOSE droptable
DEALLOCATE droptable
8 ноя 16, 16:54    [19871272]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
aptom
DECLARE @sql VARCHAR(MAX) ,
@tablename VARCHAR(MAX)

DECLARE droptable CURSOR FOR
SELECT name
FROM upps.sys.tables
where
name<>'_AccumRgT22986'and
name<>'_AccumRg30738' and
name<>'_AccumRgT23011' and
name<>'_AccumRg28109' and
name<>'_AccumRgT22208' and
name<>'_AccumRgT22230' and
name<>'_Document552_VT15444' and
name<>'_AccRg1585' and
name<>'_AccRgAT21606' and
name<>'_AccRgED1609' and
name<>'_AccRgAT31637' and
name<>'_AccumRg32234' and
name<>'_AccRgED1639' and
name<>'_Document28327_VT29460' and
name<>'_AccumRgT32243' and
name<>'_Seq23349' and
name<>'_AccumRgT22343' and
name<>'_AccumRgT21395' and
name<>'_AccumRgT22366' and
name<>'_AccumRgT22464' and
name<>'_Document365' and
name<>'_AccumRgT21819' and
name<>'_AccumRgT21829' and
name<>'_Document24413_VT24596' and
name<>'_Document343_VT6558' and
name<>'_AccumRg21238'


OPEN droptable
FETCH NEXT FROM droptable
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'select count(*) from upps.dbo.'+ @tablename
PRINT @sql
begin try
EXEC (@sql)
end try
BEGIN CATCH
PRINT ERROR_MESSAGE();
END CATCH;

FETCH NEXT
FROM droptable
INTO @tablename
END

CLOSE droptable
DEALLOCATE droptable


The query has exceeded the maximum number of result sets that can be displayed in the results grid. Only the first 100 result sets are displayed in the grid. Как убрать ошибку ?
8 ноя 16, 16:56    [19871294]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aptom,

ну SET NOCOUNT ON и ошибки можно в таблицу
8 ноя 16, 17:04    [19871323]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
TaPaK,

вроде работеет
осталось отдуплить как занести ошибки в таблицу а потом вывести
поможешь ?
8 ноя 16, 17:08    [19871339]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aptom
TaPaK,

вроде работеет
осталось отдуплить как занести ошибки в таблицу а потом вывести
поможешь ?

как вам доверили базу ресторить :)

IF OBJECT_ID('tempdb..#Result') IS NOT NULL DROP TABLE #Result
CREATE TABLE #Result ([Message] VARCHAR(MAX) )

и вместо
PRINT ERROR_MESSAGE();

INSERT INTO #Result ([Message]) VALUES (ERROR_MESSAGE())
8 ноя 16, 17:11    [19871369]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
TaPaK,
нет выбора у людей )
8 ноя 16, 17:15    [19871395]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
TaPaK,



IF OBJECT_ID('tempdb..#Result') IS NOT NULL DROP TABLE #Result
CREATE TABLE #Result ([Message] VARCHAR(MAX) )



а это в куда втыкать ?
8 ноя 16, 17:18    [19871415]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aptom,

в потолок
8 ноя 16, 17:19    [19871421]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
aptom
Member

Откуда:
Сообщений: 102
TaPaK
aptom,

в потолок


а забирать результаты ?
8 ноя 16, 17:21    [19871432]     Ответить | Цитировать Сообщить модератору
 Re: Ищу специалиста для восстановления базы 1с ms sql 2005  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aptom,

в пол
SELECT [Message] FROM #Result
8 ноя 16, 17:24    [19871454]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить