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

Откуда: ->|<- :адуктО
Сообщений: 22450
Мне нужно перенести файл БД на другой диск сервера.
Как это сделать логично и безболезненно.

Самый простой путь - бэкап и восстановление в другом месте, для этого нужно остановить работу с базой. То же самое - отсоединить файл БД и присоединить в другом месте (к тому же я не знаю, прокатит это или нет, если меняется путь).

Есть ли простой способ сделать это, не останавливая сервер? Типа создать новый файл БД, перебросить туда все объекты, потом старый удалить. Или лучше уж пожертвовать временем простоя?
13 сен 12, 11:59    [13156611]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
Shocker.Pro
Самый простой путь - бэкап и восстановление в другом месте, для этого нужно остановить работу с базой.

Для этого НЕ нужно останавливать работу с базой
Для этого нужно сделать потом бэкапы журнала транзакций.
И запланировать время на переключиние.
13 сен 12, 12:02    [13156634]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Shocker.Pro
Мне нужно перенести файл БД на другой диск сервера.
Как это сделать логично и безболезненно.

Самый простой путь - бэкап и восстановление в другом месте, для этого нужно остановить работу с базой. То же самое - отсоединить файл БД и присоединить в другом месте (к тому же я не знаю, прокатит это или нет, если меняется путь).

Есть ли простой способ сделать это, не останавливая сервер? Типа создать новый файл БД, перебросить туда все объекты, потом старый удалить. Или лучше уж пожертвовать временем простоя?

Бэкап и восстановление не требуют остановки сервера.
13 сен 12, 12:02    [13156636]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
Glory
Для этого НЕ нужно останавливать работу с базой
Для этого нужно сделать потом бэкапы журнала транзакций.
Честно говоря, не понял. Забэкапить базу я могу и не останавливая базу, но потом все равно придется остановить ее на время удаления/восстановления, чтобы пока накатываются изменения из лога транзакций, не вносились новые изменения пользователями.

Вообще, бэкап/восстановление идет недолго, на все про все 20 минут уйдет, даже нет смысла с логом возиться. Вопрос как раз в том, чтобы вообще не пррерывать работу с базой, если это возможно.

Либо я не понял, как надо сделать.

+
Ken@t
Бэкап и восстановление не требуют остановки сервера.
ой, ну я имел ввиду остановку работы с базой.
13 сен 12, 12:11    [13156706]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
Shocker.Pro
Честно говоря, не понял. Забэкапить базу я могу и не останавливая базу, но потом все равно придется остановить ее на время удаления/восстановления, чтобы пока накатываются изменения из лога транзакций, не вносились новые изменения пользователями.

Ну так это несколько минут ?
Отключить пользователей
Сделать бэкап лога
Применить его на уже восстановленную копию базы
Отключить старую базу
Разрешить соединения с новой базой
13 сен 12, 12:14    [13156740]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
Shocker.Pro
Вообще, бэкап/восстановление идет недолго, на все про все 20 минут уйдет, даже нет смысла с логом возиться. Вопрос как раз в том, чтобы вообще не пррерывать работу с базой, если это возможно.

Это что бы каким то образом все открытые коннекта стали вместо одной базы вдруг использовать другую ?
13 сен 12, 12:15    [13156758]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
Ну во-первых база должна остаться с тем же именем на том же сервере, а базу вроде переименовать нельзя (или я не прав?)
Во-вторых, если можно сделать полностью БЕЗ остановки базы, я бы занимался спокойно в рабочее время, а так мне придется это делать ночью, останавливая и потом запуская сайты.

А раз логичного пути нет, то я сделаю это просто через бэкап, это будет проще.\

Спасибо.
13 сен 12, 12:18    [13156789]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
Shocker.Pro
Ну во-первых база должна остаться с тем же именем на том же сервере, а базу вроде переименовать нельзя (или я не прав?)

Не правы
13 сен 12, 12:19    [13156797]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
Glory
Это что бы каким то образом все открытые коннекта стали вместо одной базы вдруг использовать другую ?
Не другую. База та же самая. Просто мигрируют сами данные.
13 сен 12, 12:19    [13156799]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
Создаете новую файловую группу
В ней новый файл в нужном каталоге
Перемещаете таблицы и индексы в новую файловую группу
База будет доступна, но блокировки будут все равно мешать пользователям
13 сен 12, 12:27    [13156862]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
ясно. Как понимаю, путем пересоздания этих таблиц и переноса данных и никакого инструмента для этого дела нет.
13 сен 12, 12:48    [13157005]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Shocker.Pro
путем пересоздания этих таблиц и переноса данных и никакого инструмента для этого дела нет

опять неправы
путем создания/пересоздания кластерного индекса на требуемой файловой группе
13 сен 12, 13:41    [13157571]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
и как вариант, создаете новый файл на нужном диске в файловой группе
а потом делаете
DBCC SHRINKFILE 
(file_name , EMPTYFILE) 

где file_name - имя необходимого файла для переноса
и все данные из этого файла перетекут в другой(ие) файлы этой же файловой группы
а файл потом можно будет убить
13 сен 12, 13:45    [13157612]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
HandKot,

сами перетекут?
13 сен 12, 13:53    [13157682]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Shocker.Pro
HandKot,

сами перетекут?


ага
EMPTYFILE 
Выполняет миграцию всех данных из указанного файла в другие файлы в той же файловой группе. Поскольку компонент Database Engine больше не разрешает размещать данные в пустом файле, этот файл может быть удален инструкцией ALTER DATABASE.
13 сен 12, 14:06    [13157777]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
Ага, это я и имел ввиду.
Полагаю, на время миграции все равно будет блокировка, но, возможно, это все займет меньше времени. Поэкспериментирую на тестовой базе, спасибо
13 сен 12, 14:15    [13157861]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
Не, чего-то никуда не перетекло само. Размер второго файла остался как был после выполнения команды.
13 сен 12, 15:35    [13158856]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
edyaN
Member

Откуда: Berlin
Сообщений: 185
Shocker.Pro,

не знаю, Ваш ли это случай, но первичный .mdf файл Вам не удасться очистить с помощью DBCC SHRINKFILE.
13 сен 12, 15:46    [13158991]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
Да, файл первичный (и единственный)
13 сен 12, 15:52    [13159058]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
да есть такая бяка
тогда два выхода:
1. как говорил Glory
2. отсоединить БД переместить файл и заново приатачить
13 сен 12, 16:07    [13159205]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
edyaN
Member

Откуда: Berlin
Сообщений: 185
Shocker.Pro
Да, файл первичный (и единственный)

тогда offline неизбежен, но можно сократить время простоя до пары минут. для этого создайте новую файловую группу, добавьте туда файл данных, создав его там где надо. Перенесите туда таблицы пользователей, перестроив индексы на новой файловой группе. Теперь можно сделать SHRINKFILE для mdf, он должен сильно уменьшиться. Если Вам это не критично, то можно оставить .mdf в покое и на этом закончить. Если же надо полностью очистить диск, то переводим базу в offline делаем
ALTER DATABASE [db] modify file (name = [db_data], filename  = 'new_path:db.mdf')

копируем .mdf на новое место и переводим базу в online.
Если все заскриптовать, то все отработает очень быстро и никто ничего не заметит :)
13 сен 12, 16:12    [13159254]     Ответить | Цитировать Сообщить модератору
 Re: SQL2000: перенос файла БД  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22450
Ясно, спасибо.
13 сен 12, 16:16    [13159301]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: SQL2000: перенос файла БД  [new]
lavvas
Member

Откуда: Санкт-Петербург
Сообщений: 18
Ken@t,

Проблема заключается в том, что не могу перенести ДБ (в данном случае) tempdb да другой сервер.
Ни скрипт, ни перезагрузка не помогают. Всё остается на своих местах. И RAID остается на своём месте с прежним размером.
И загрузка удаленного рабочего стола не даёт возможности войти.
15 дек 13, 14:53    [15295121]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить