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

Откуда:
Сообщений: 403
Есть очень тяжелая база (предположим терабайт) и есть куча разработчиков которым нужна эта база очень часто с актуальными данными для разработки и тестирования (причем для каждого отдельная база). В этой тяжелой базе 99% занимает таблица которая совсем никак никому не нужна для разработки и тестирования.
Как можно быстро сделать копию базы без этой таблицы и восстановить эту лёгкую копию всем разработчикам?
20 апр 16, 10:03    [19080731]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
xenix
Guest
Можно попробовать нарисовать пакет интеграции и возить только необходимые данные
20 апр 16, 10:05    [19080743]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
_djХомяГ
Guest
А может восстановить копию этой базы, дропнуть тяжелую таблицу и растиражировать эту копию уже без таблицы
20 апр 16, 10:12    [19080776]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
leonix
Member

Откуда:
Сообщений: 403
xenix
Можно попробовать нарисовать пакет интеграции и возить только необходимые данные

Спасибо. Попробую.
20 апр 16, 10:17    [19080797]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
leonix
Member

Откуда:
Сообщений: 403
_djХомяГ
А может восстановить копию этой базы, дропнуть тяжелую таблицу и растиражировать эту копию уже без таблицы

Копирование и дропание как раз и долгое сейчас из-за этой таблицы.
20 апр 16, 10:18    [19080802]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Как вариант на первый раз можно включить Instant File Initialization, чтобы восстановление из бекапа быстрее происходило. Либо как советовали ранее. Развернуть копию базы и переливать в нее актуальные данные. Схема компаратором изменения накатывать и тд.
20 апр 16, 10:28    [19080851]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
Glory
Member

Откуда:
Сообщений: 104760
Можно попробовать разделить базу на несколько файловых групп.
И использовать Example: Online Restore of a Read/Write File (Full Recovery Model)
20 апр 16, 10:31    [19080866]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
komrad
Member

Откуда:
Сообщений: 5250
leonix
Есть очень тяжелая база (предположим терабайт) и есть куча разработчиков которым нужна эта база очень часто с актуальными данными для разработки и тестирования (причем для каждого отдельная база). В этой тяжелой базе 99% занимает таблица которая совсем никак никому не нужна для разработки и тестирования.
Как можно быстро сделать копию базы без этой таблицы и восстановить эту лёгкую копию всем разработчикам?

если Энтерпрайз, то можно попробовать следующий трюк:
1) создать снэпшот
2) truncate table
3) restore db from snapshot

+ sample:

use master 
go
/*new db*/
create database test_snap 
go
/*create big table and populate with data*/
use test_snap
go
create table big_table (i int identity,f char(4000));
go
insert into big_table(f)
select REPLICATE('!',4000)
go 20000


use master 
go

/*backup just in case*/
backup database test_snap to disk='H:\Backups\FULL\USER_DATABASES\test_snap.BAK'
go
/*create snapshot*/
CREATE DATABASE test_snap_ss
ON 
(
    NAME = test_snap,
    FILENAME = 'F:\MSSQL\UserData\test_snap.ss'
) AS SNAPSHOT OF test_snap
GO

/*check table and truncate it*/
use test_snap
go
select count(1) from big_table  -- 20000 recs
truncate table big_table 
select count(1) from big_table  -- 0 recs
go
select top 100 * from test_snap_ss..big_table   -- 100 
go

/*get small backup*/
use master 
go
backup database test_snap to disk='H:\Backups\FULL\USER_DATABASES\test_snap_truncated.BAK'
go

/*restore it to small db*/
create database test_snap_small 
go
restore database test_snap_small
from disk='H:\Backups\FULL\USER_DATABASES\test_snap_truncated.BAK'
with replace,
move 'test_snap' to 'F:\MSSQL\UserData\test_snap_small.mdf',
move 'test_snap_log' to 'G:\MSSQL\UserLog\test_snap_small_log.ldf',
stats=1
go
/*table is empty there as expected*/
select top 100 * from test_snap_small..big_table   -- 0 records
go

/*restore db from snapshot*/
use master 
go

select top 10 * from test_snap..big_table  -- 0 records
go

restore database test_snap
from database_snapshot='test_snap_ss'
go

select top 10 * from test_snap..big_table  -- 10 records
go

/*clean-up*/
drop database test_snap_small
drop database test_snap_ss
drop database test_snap
go

20 апр 16, 11:56    [19081531]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
afgm
Member

Откуда:
Сообщений: 587
Glory
Можно попробовать разделить базу на несколько файловых групп.
И использовать Example: Online Restore of a Read/Write File (Full Recovery Model)

Очень интересует данная тема. Тоже есть необходимость получать оперативно боевую БД для разборов разных ситуаций.
Можно было бы часть таблиц исключить из бэкапа. Пробовал через файлгруппы, но после восстановления ругается что не может получить доступ к таблице в невосстановленной группе. Как можно это обойти?
20 апр 16, 16:24    [19083996]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
Glory
Member

Откуда:
Сообщений: 104760
afgm
Пробовал через файлгруппы, но после восстановления ругается что не может получить доступ к таблице в невосстановленной группе.

По условию задачи - "В этой тяжелой базе 99% занимает таблица которая совсем никак никому не нужна для разработки и тестирования."
20 апр 16, 17:14    [19084362]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
afgm
Member

Откуда:
Сообщений: 587
Glory
таблица которая совсем никак никому не нужна для разработки и тестирования.

Именно! Таких таблиц несколько и это аналог логов, истории, протокола. Для тестирования, кроме особых случаев, не нужны.
Ну не 99%, но таки половина БД.
20 апр 16, 17:27    [19084429]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
Glory
Member

Откуда:
Сообщений: 104760
afgm
Именно! Таких таблиц несколько и это аналог логов, истории, протокола. Для тестирования, кроме особых случаев, не нужны.

зачем тогда вы обращаетесь к таблице, которая не нужна ?
20 апр 16, 17:56    [19084585]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
Crimean
Member

Откуда:
Сообщений: 13148
я бы попробовал как-то так:

- создаем пустую БД
- select into в эту новую БД за исключением этих "больших таблиц"
- накинуть "схему" поверх
- profit
20 апр 16, 18:04    [19084614]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
afgm
Member

Откуда:
Сообщений: 587
Glory
зачем тогда вы обращаетесь к таблице, которая не нужна ?

Утонение: данные в таблице не нужны для целей тестирования и отладки, но она вызывается из разных мест (интерфейс, процедуры, представления). Цель избавится именно от данных.
20 апр 16, 20:39    [19085106]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
Glory
Member

Откуда:
Сообщений: 104760
afgm
Цель избавится именно от данных.

Это в корне меняет задачу.
Объект и данные внутри объекта - это разные вещи
20 апр 16, 20:42    [19085114]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
afgm
Пробовал через файлгруппы, но после восстановления ругается что не может получить доступ к таблице в невосстановленной группе. Как можно это обойти?
А нельзя эту таблицу дропнуть и пересоздать?
20 апр 16, 21:30    [19085242]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
AndrF
Member

Откуда:
Сообщений: 2194
leonix
_djХомяГ
А может восстановить копию этой базы, дропнуть тяжелую таблицу и растиражировать эту копию уже без таблицы

Копирование и дропание как раз и долгое сейчас из-за этой таблицы.


Но его можно делать ночью, по расписанию. Утром у вас всегда будет готовая компактная база...
21 апр 16, 07:49    [19085992]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы без одной таблицы для разработчиков  [new]
afgm
Member

Откуда:
Сообщений: 587
alexeyvg
А нельзя эту таблицу дропнуть и пересоздать?

Экспериментировал, но сервер не даёт модифицировать таблицы на невостановленных группах.
Единственный вариант пришёл в голову, сделать представление в основной группе, и переписывать его на тестовой БД после рестора внутрь, на таблицы-заглушки. Соответственно все запросы работают только с представлением.
21 апр 16, 09:55    [19086465]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить