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

Откуда:
Сообщений: 14
Добрый всем день. У меня возникла специфическая проблема с резервной копией базы из SQL Server 2008r2 Express Edition. Дело в том, что согласно стандарту PCI мы должны держать в базе номера платежных карт в зашифрованном виде. Что и сделано. Но, когда с помощью CardRecon сканируем резервную копию этой базы, то видим порядочное количество нешифрованных номеров, хотя сканируя файлы mdf и ldf ничего не видно.Карты эти были в свое время удалены из базы и введены уже в зашифрованном виде повторно. После этого была сделана копия базы,журнала транзакций и truncate transaction log. Recovery Model базы ставили в Full и в Simple. Так повторяли несколько раз с периодичностью в 3 месяца. Карты лезут из Stack Space копии. Может кто нибудь подскажет как с этим бороться, т.е., как убрать из копии эти нешифрованные номера карт. Заранее благодарен.
6 мар 13, 12:02    [14018598]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
ДимаСнк,
что-то кроме как создать новую базу и оттрансферить туда данные из старой ничего на ум не приходит
6 мар 13, 12:08    [14018623]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
ДимаСнк,

попробуйте DBCC SHRINKDATABASE.
6 мар 13, 12:09    [14018633]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
Гость333
Member

Откуда:
Сообщений: 3683
ДимаСнк
Карты лезут из Stack Space копии.

Расшифруйте, что это значит.
6 мар 13, 12:19    [14018719]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
ДимаСнк,

а вы случаем резвирование не в один и тотже файл делаете?
6 мар 13, 12:22    [14018737]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
ДимаСнк
Member

Откуда:
Сообщений: 14
Да нет. Я пробовал уничтожать старый файл копии и создавать ножый под другим именем. Эффект тот же.
6 мар 13, 13:17    [14019169]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
ДимаСнк
Member

Откуда:
Сообщений: 14
Когда я смотрю отчет CardRecon, то в нем я могу посмотреть откуда лезут номера карт. Так вот, одна из областей копии и названа Stack Space. Хорошо бы по подробнее узнать структуру резарвной копии. Нигде про это не читал.
6 мар 13, 13:20    [14019191]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
ДимаСнк
Member

Откуда:
Сообщений: 14
leov, Приходило на ум, только сервер Express, а в нем Copy database нет. Т.е. новую базу можно создать только из скрипта. Надо его редактировать, а времени как всегда нет. Данные перенести не проблема.
6 мар 13, 13:23    [14019214]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ДимаСнк
в базе номера платежных карт в зашифрованном виде. Что и сделано.


Т.е. сами данные в бд (а не в бэкапе) проверены?

ДимаСнк
Да нет. Я пробовал уничтожать старый файл копии и создавать ножый под другим именем. Эффект тот же.


Копия тут не причем, скорее всего У Вас "незашифрованные данные" лежат в страницах файла данных, которые были помечены как свободные и доступные для повтороного использования. SQL Server при этом, естественно, не перезатирает в них информацию, например 0ями.
6 мар 13, 13:23    [14019218]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ДимаСнк
Когда я смотрю отчет CardRecon, то в нем я могу посмотреть откуда лезут номера карт. Так вот, одна из областей копии и названа Stack Space. Хорошо бы по подробнее узнать структуру резарвной копии. Нигде про это не читал.


Что такое CardRecon? Что Вы подсовываете CardRecon для анализа?

ЗЫ. Кстати, а как обеспечено шифрование?
6 мар 13, 13:26    [14019244]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
Гость333
Member

Откуда:
Сообщений: 3683
pkarklin
скорее всего У Вас "незашифрованные данные" лежат в страницах файла данных, которые были помечены как свободные

Также они могут лежать в занятых страницах файла в виде ghost record'ов.
6 мар 13, 13:27    [14019249]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Гость333
Также они могут лежать в занятых страницах файла в виде ghost record'ов.


Можно оценить:

SELECT SUM(ghost_record_count) FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('TableWithCardData'), 1, 0, 'detailed')
6 мар 13, 13:35    [14019332]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
ДимаСнк
Да нет. Я пробовал уничтожать старый файл копии и создавать ножый под другим именем. Эффект тот же.


Тода только шринк как рекомендовали выше и в зависимости от того как хранятся данные может еще понадобится DBCC CLEANTABLE
6 мар 13, 13:39    [14019357]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
aleks2
Guest
ДимаСнк
Но, когда с помощью CardRecon сканируем резервную копию этой базы, то видим порядочное количество нешифрованных номеров, хотя сканируя файлы mdf и ldf ничего не видно.

Загадочно... однако. Очень.

Свободные страницы и прочая муть ЭТОГО объяснить не могут.
6 мар 13, 13:49    [14019444]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
ДимаСнк
Member

Откуда:
Сообщений: 14
pkarklin, А как добраться до этих свободных страниц? И, рсли это так, то почему карточки не видны при сканировании файла данных.
6 мар 13, 13:54    [14019480]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
ДимаСнк
Member

Откуда:
Сообщений: 14
pkarklin, шифрование идет в аппликации и данные в виде 16 кода пишутся в соответствующее поле таблицы. В самой базе данные не шифруются. Так было сделано до меня. Ключ и сертификат шифрования хранятся отдельно.
6 мар 13, 13:57    [14019504]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ДимаСнк
А как добраться до этих свободных страниц? И, рсли это так, то почему карточки не видны при сканировании файла данных.


До них никак не добраться. Избавиться от них, как уже было сказано, можно попробовать с помощью DBCC SHRINKDATABASE\SRINKFILE.

Но действительно, выглядит странным, что в резервной копии данные есть, а в файле данных их нет. Еще более странным выглядит то, что Stack Space в части MS SQL - это кусок памяти в пуле памяти MS SQL, который выделяется для каждого процесса. У меня сомнения, что он попадает в бэкап.
6 мар 13, 13:59    [14019517]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
ДимаСнк
Member

Откуда:
Сообщений: 14
Гость333, Все бы и так, но предварительно все нешифрованные данные были стерты из соответствующего столбца. Туда пишутся только вновь пришедшие данные, которые шифруются в аппликации. А в копии как раз видны стертые старые данные.
6 мар 13, 13:59    [14019524]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ДимаСнк,

Давайте, покажите все-таки результат RESTORE HEADERONLY FROM ваш бэкап...
6 мар 13, 14:01    [14019535]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
ДимаСнк
leov, Приходило на ум, только сервер Express, а в нем Copy database нет. Т.е. новую базу можно создать только из скрипта. Надо его редактировать, а времени как всегда нет. Данные перенести не проблема.
вот нифига надежного вы не придумаете кроме этого
теоретически старые данные надо было не удалять а переписывать нулями
но теперь уже поздно об этом рассуждать
скриптуйте структуру, создавайте новую базу, поднимайте структуру, потом трансферте данные
вот ей богу на 20 минут работы
между прочим CopyDatabase отстойная вещь
я пару раз пытался пользоваться но плюнул. тормозно как-то и не прозрачно
а скрипт - железная вещь

а рассуждать что там у мелкософта где лежит в файле данных или в файле бэкапа дело безнадежное
в doc и xls бывает столько говна накапливается что только удивляться
и тут наверняка така-же фигня
6 мар 13, 18:13    [14021399]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35196
Блог
Попробуйте перед шринком выполнить ALTER TABLE xx REBUILD для таблиц, где были номера карт

-- занимаемое на диске место
SELECT TOP 1000
       (row_number() over(order by (a1.reserved + ISNULL(a4.reserved,0)) desc))%2 as l1,
       a3.name AS [schemaname],
       a2.name AS [tablename],
       a1.rows as row_count,
      (a1.reserved + ISNULL(a4.reserved,0))* 8 AS reserved,
       a1.data * 8 AS data,
      (CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data THEN (a1.used + ISNULL(a4.used,0)) - a1.data ELSE 0 END) * 8 AS index_size,
      (CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used THEN (a1.reserved + ISNULL(a4.reserved,0)) - a1.used ELSE 0 END) * 8 AS unused,
      'ALTER TABLE [' + a2.name  + '] REBUILD' as [sql]
  FROM (SELECT ps.object_id,
               SUM(CASE WHEN (ps.index_id < 2) THEN row_count ELSE 0 END) AS [rows],
               SUM(ps.reserved_page_count) AS reserved,
               SUM(CASE WHEN (ps.index_id < 2) THEN (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count) ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count) END) AS data,
               SUM(ps.used_page_count) AS used
          FROM sys.dm_db_partition_stats ps
          GROUP BY ps.object_id
       ) AS a1
  LEFT JOIN (SELECT it.parent_id,
                    SUM(ps.reserved_page_count) AS reserved,
                    SUM(ps.used_page_count) AS used
               FROM sys.dm_db_partition_stats ps
               INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
               WHERE it.internal_type IN (202,204)
               GROUP BY it.parent_id
            ) AS a4 ON (a4.parent_id = a1.object_id)
  INNER JOIN sys.all_objects a2  ON ( a1.object_id = a2.object_id )
  INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id)
  WHERE a2.type <> N'S' and a2.type <> N'IT'
  ORDER BY 8 DESC
6 мар 13, 21:43    [14022026]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
ДимаСнк
Member

Откуда:
Сообщений: 14
leov,Да я уже и сам к такому выводу пришел. Подожду, пока не поставят Standart Edition и потом создам новую базу из скрипта и через DTS перекину данные. Только много связей PK-FK и надо будет спланировать очередность переброса таблиц. Благо, что тригеров нет.
6 мар 13, 22:33    [14022242]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
ДимаСнк,
я делал так
в созданном скрипте сначала шли блоком delete потом create table
и только в хвосте альтерами создание констрейтов и пр триггеров и процедур
я в скрипте искал первое " fore" первое создание foreign key
и выполнял весь скрипт что выше него
потом трансферил данные
(на sql2000 как то быстро получалось. на более старших я не знаю как сразу для всех таблиц поставить галку вставки идентити)
потом выполнял остаток скрипта

я вам не просто так говорю что там не более 20 минут работы
в какой-то период я это очень много раз делал
7 мар 13, 00:45    [14022742]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
pkarklin

До них никак не добраться.

DBCC PAGE никто не отменял.
7 мар 13, 01:49    [14022840]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с резервной копией  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
я соглашусь с pharklin насчёт ghost records.
В этом случае имеет смысл сделать следущее:

1. проверь если это имеет отношение - http://support.microsoft.com/kb/2622823
2. включи 662, 3605 флаги - посмотри в логе что ghost cleanup работает.
3. и вообще - EXEC sp_clean_db_free_space @dbname = N'ХХХХ' пробовал?
4. SELECT с PAGLOCK гарантирует что ghost records будет добавлены в очередь на cleanup
5. restart SQL - поможет в 90% случаев.
7 мар 13, 02:07    [14022854]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить