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

Откуда:
Сообщений: 517
День добрый!
Есть не мало баз размером порядка 100-300Гб, часто программерам необходимо "поковыряться" в данных. Делать это напрямую у клиента как-то не очень... Тащить полный бекап, ресторить и т.п. тоже не совсем логично.
В существующих базах большую часть объема занимают таблицы логов и еще всякие "бесполезные" данные. Поэтому возник вопрос сделать процесс, который может скопировать выбранные программером таблицы, чтоб их можно было легко перенести на тестовый сервер и восстановить на нем данные?
Может есть какой-то готовый функционал или инструменты, которые могут справиться с задачей кроме как select * into... from ...?

Речь идет о sql 2016 standard edition.

Все данные находятся на одном партишине.

Спасибо!
4 июл 18, 12:27    [21542146]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
aleksrov
Member

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

Мастер импорта\экспорта вам в помощь
4 июл 18, 12:31    [21542161]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
Владислав Колосов
Member

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

Integration Services, создаете пакет, потом одним кликом данные скачиваете.
Повозиться придется, конечно, ввиду внешних и автоключей скрипты отключения - включения создать в пакете.
4 июл 18, 13:50    [21542444]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
abrashka
Member

Откуда:
Сообщений: 517
Владислав Колосов,

спасибо!
Думал об этом, но на разных базах разные версии таблиц. Поэтому либо писать динамическое создание таблиц и их заполнение, либо...
поэтому и хотелось бы другое решение, типа выборочного бэкапа и восстановления.
4 июл 18, 14:54    [21542796]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
abrashka
поэтому и хотелось бы другое решение, типа выборочного бэкапа и восстановления.
Вам же надо вручную определять, какие данные нужно переносить, а какие не нужно? Тогда это придётся указывать, независимо от того, как будет называться такой механизм: если бы бакап мог бакапить только выбранные таблицы, то их всё равно придётся указывать вручную.

Но самое простое - это всё таки предоставлять девелоперам копии баз, заодно и бакап будет проверяться.
4 июл 18, 16:40    [21543355]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
abrashka
Member

Откуда:
Сообщений: 517
alexeyvg, Ну имелось в виду, что названия таблиц которые нужно скопировать могут передаваться как параметр в процедуру.
На данный момент так и делаем, перетаскиваем бэкапы, но ингода приходится тянуть 300 Гига через океан, чтоб посмотреть какую-то мелочь.
4 июл 18, 16:52    [21543406]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5231
abrashka
Может есть какой-то готовый функционал или инструменты, которые могут справиться с задачей кроме как select * into... from ...?


есть, называется batch file, t-sql & BCP OUT

в батнике подключиться к сиквелу, выбрать список необходимых таблиц, для каждой вызвать подобную команду:

bcp [Database].[dbo].[myTable] OUT X:\BCP_OUT\myTable.bcp -T -n


выходные файлы заархивировать по необходимости.


И, в финале, попросить отправить вам архив.
4 июл 18, 18:15    [21543781]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
abrashka
Member

Откуда:
Сообщений: 517
komrad,
Спасибо! Буду пробовать
4 июл 18, 18:20    [21543797]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
komrad
есть, называется batch file, t-sql & BCP OUT

в батнике подключиться к сиквелу, выбрать список необходимых таблиц, для каждой вызвать подобную команду:

bcp [Database].[dbo].[myTable] OUT X:\BCP_OUT\myTable.bcp -T -n
Только уж не -T, хотя бы чтоб не было проблем с спецсимволами.

Такой способ понятен, но человек же ищет такую штуку, что бы просто список таблиц передать, и опа, скопировано.
5 июл 18, 09:53    [21544915]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5231
alexeyvg
komrad

bcp [Database].[dbo].[myTable] OUT X:\BCP_OUT\myTable.bcp -T -n
Только уж не -T, хотя бы чтоб не было проблем с спецсимволами.


проблем не будет
-T - это виндовая аутентификация
-n - это бинарный формат

+ BCP /?
C:\Users\komrad>bcp /?
usage: bcp {dbtable | query} {in | out | queryout | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n native type] [-c character type] [-w wide character type]
[-N keep non-text native] [-V file format version] [-q quoted identifier]
[-C code page specifier] [-t field terminator] [-r row terminator]
[-i inputfile] [-o outfile] [-a packetsize]
[-S server name] [-U username] [-P password]
[-T trusted connection] [-v version] [-R regional enable]
[-k keep null values] [-E keep identity values]
[-h "load hints"] [-x generate xml format file]
[-d database name] [-K application intent] [-l login timeout]

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

на мой взгляд, под такое описание попадает параметризированный батник с вызовом BCP внутри

Примерно так:
+ батник bcp_out.bat
bcp [master].dbo.%1 out .\%1.dat -S ВАШСИКВЕЛ -T -n

+ вызов
bcp_out.bat sysdatabases
5 июл 18, 10:45    [21545125]     Ответить | Цитировать Сообщить модератору
 Re: Частичное восстановление данных, как сделать?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
komrad
alexeyvg
Только уж не -T, хотя бы чтоб не было проблем с спецсимволами.


проблем не будет
-T - это виндовая аутентификация
-n - это бинарный формат
Ой, да, по привычке подумал, что -T это текстовый формат.
Да, вот с -n, и последующей архивацией, я как раз передавал данные на другой сервер (в архивную базу), хороший способ.

komrad
alexeyvg
Такой способ понятен, но человек же ищет такую штуку, что бы просто список таблиц передать, и опа, скопировано.

на мой взгляд, под такое описание попадает параметризированный батник с вызовом BCP внутри

Примерно так:
Хе, а таблицу создать? :-)
5 июл 18, 11:28    [21545303]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить