Меня попросили усечь большую таблицу в MS SQL Server 2008. Данные не нужны, но могут понадобиться раз в два года. Его НИКОГДА не нужно будет менять, только просмотр.
Вопрос в том, что, поскольку мне не нужны данные на повседневной основе, что мне с ними делать, чтобы защитить и создать резервную копию?
Пожалуйста, имейте в виду, что мне нужно будет делать его доступным, может быть, раз в два года, и для нас НЕЛЬЗЯ, если процесс восстановления займет несколько часов.
Вся таблица состоит примерно из 3 миллионов строк, и мне нужно усечь ее примерно до 1 миллиона строк.
Как вы планируете получить доступ к данным таблицы?
Если вы используете что-то немного гибкое (собственный код или просто запросы SQl), то простой выход - скопировать необходимую таблицу в другую базу данных и отсоединить ее от сервера. После этого обрежьте таблицу (или удалите ненужные строки, хотя вы можете проверить свой размер T-Log, если вы это сделаете).
Когда вам это понадобится, вы всегда можете перемонтировать соответствующую базу данных из хранилища в режиме только для чтения. Если вам нужно запустить запросы к нескольким резервным копиям одновременно, вы можете создать представление, перегруппировав все данные.
Если вы используете программное обеспечение, которое не позволяет вам настраивать доступ к этой таблице, вы все равно можете скопировать таблицу в другую базу данных самостоятельно, но восстановление этой резервной копии может быть проблематичным, поскольку вам необходимо объединить существующий контекст. (в другой таблице указано) со старыми данными. Кроме того, структура данных могла измениться, поэтому восстановление было практически невозможно.
В таком случае я бы посоветовал вам просто сделать резервную копию полной базы данных и сохранить ее (желательно вместе с версией программного обеспечения, которое обращается к ней).
Архивирование / доступность: вот такая мысль ... 1) Выполните удаление данных 2) Поместите таблицу tyhat в ее собственную группу файлов SQL 3) Запишите файл на устройство только для чтения (разрешено пространство) 4) Используйте ALTER TABLE, чтобы переопределить whaere файл есть и определите его как только для чтения 5) Вечеринка, Гарт!
Теперь данные не хранятся на ваших жестких дисках, их нельзя изменить, но они все еще доступны при необходимости.
3 миллиона строк - это немного, особенно для sql server. Кроме того, вы не можете усечь таблицу и сохранить строки. Truncate полностью очищается.
Также удаление происходит медленно, даже если у вас есть время.
Я бы щелкнул правой кнопкой мыши по вашей таблице, скрипт как, создайте новую таблицу. Переименуйте его, как Table_Backup11232011, не забудьте также переименовать свои первичные ключи ...
insert into Table_Backup11232011 select * from oldtable
truncate table oldtable
Теперь у вас есть резервная копия и новая таблица. 3 миллиона строк, вероятно, обойдутся вам всего в несколько сотен мегабайт, а это еще ничего.