Перенести базу данных MS SQL на другой диск.
Сервер 1С создал новый массив на SSD и хочу перенести на него часть баз 1С в MSSQL
Вопрос как Microsoft SQL Server поменять место хранения базы данных ?
Administrator
Сообщений: 744 Баллов: 8901 Рейтинг: 0 Регистрация: 09.02.2011
17.03.2016 18:10:01
РЕШЕНИЕ:
1. Далее Вам необходимо зайти в SQL Managment Studio.
2. Сделайте бэкап базы, которую хотите перенести на другой диск (на всякий случай).
3. Нажмите правой кнопкой по нужной вам базе пункт Tasks -> Detach. В открывшемся окне нажмите ок
4. Зайдите в ту папку, там где физически лежит Ваша база данных (например у Вас C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data) и скопируйте в новую папку или диск два файла, они должны называться как Ваша база данных (расширение файлов MDF и LDF).
5. В SQL Managment Studio, в дереве, станьте на элемент «Databases» и нажмите правую кнопку, затем Attach.
6. В появившемся окне нажмите Add (добавить) и выберите файл из той папки, куда вы скопировали базу и нажмите ок.
ФОТО ТОГО КАК ЭТО ОПИСАНО ВЫШЕ: 



При ошибке:
The file «*****.mdf» is compressed but does not reside in a read-only database or filegroup. The file must be decompressed.
Решение:
The solution to this is marking the mdf and ldf file as uncompressed. Follow the following steps,
1. Right-click the .mdf file and select the properties menu.
2. From the Properties dialog box select the Advanced button
4. From the Advanced Dialog un-tick the «Compress Contents To Save Disk Space check box»
Do the same thing for the .ldf file
Вики IT-KB
Как перенести файлы базы данных SQL Server в другой каталог или на другой диск

Рассмотрим пример перемещения файлов пользовательской базы данных SQL Server в новое месторасположение. В рассматриваемом примере все файлы одной отдельно взятой БД с именем EffectOffice будут перенесены с одного логического диска на другой (с диска T:\ на диск U:\ ).
Перед началом процедуры переноса файлов базы данных остановим cервисы и приложения, работающие с этой базой данных.
Подключимся к экземпляру SQL Server, на котором расположена интересующая нас база данных и выясним текущее размещение файлов БД с помощью запроса:
USE master; SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID('EffectOffice');
Выполним запрос на закрытие всех соединений к БД и перевод БД в одно-пользовательский режим:
ALTER DATABASE [EffectOffice] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Переведём базу данных в Offline-режим:
ALTER DATABASE [EffectOffice] SET OFFLINE;
Выполним копирование файлов БД в новое место-расположение с помощью утилиты командной строки robocopy, которая позволит нам сохранить все разрешения на каталоги и файлы на уровне NTFS.
В нашем примере файлы БД копируются из каталога T:\DBCL02-EffectOffice в каталог U:\DBCL02-EffectOffice . Каталог назначения при этом будет создан в процессе копирования и на него будут скопированы все атрибуты исходного каталога.
ROBOCOPY "T:\DBCL02-EffectOffice" "U:\DBCL02-EffectOffice" ^ /E /B /COPYALL /DCOPY:DAT /V /R:2 /W:10 ^ /UNILOG+:U:\Robocopy.log /BYTES /TEE /NP /UNICODE
Выполним замену путей к файлам на уровне SQL Server запросом вида (отдельный запрос по каждому файлу):
ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice.mdf' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_log', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_log.LDF' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Version_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Version_dat.ndf' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Message_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Message_dat.ndf' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Blob_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Blob_dat.ndf' );
Переведём базу данных в Online-режим и обратно включим многопользовательский режим работы с БД
ALTER DATABASE [EffectOffice] SET ONLINE ALTER DATABASE [EffectOffice] SET MULTI_USER
Запустим сторонние службы и приложения, использующие базу данных и убедимся в штатной работе с данными.
После успешного запуска БД и проверок, можем удалить файлы с их исходного местоположения ( T:\DBCL02-EffectOffice )
Дополнительные источники информации:
Проверено на следующих конфигурациях:
| Версия SQL Server |
|---|
| Microsoft SQL Server 2016 Standard Edition SP2 CU14 (13.0.5830.85) |

Автор первичной редакции:
Алексей Максимов
Время публикации: 24.09.2020 09:15
Обсуждение
microsoft-sql-server/t-sql-script-samples/how-to-move-sql-server-database-files-to-another-directory-or-to-a-different-drive.txt · Последнее изменение: 24.09.2020 09:15 — Алексей Максимов
Форум ФОСС-Он-Лайн
Перенести Базу данных SQL с одного диска на другой
7 сообщений • Страница 1 из 1
nikolay Пользователь Сообщения: 10 Зарегистрирован: 17 окт 2011, 11:23 2 + 2 = ?: 4
Перенести Базу данных SQL с одного диска на другой
Сообщение nikolay » 17 окт 2011, 11:30
Как перенести базу данный в MS SQL Server 2008 R2 c одного диска на другой. В настоящее время лежит в C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data
А нужно например в D:\Baza
mitok Разработчики FossDoc Сообщения: 5 Зарегистрирован: 07 дек 2010, 10:02 2 + 2 = ?: 4 Контактная информация:
Re: Перенести Базу данных SQL с одного диска на другой
Сообщение mitok » 17 окт 2011, 13:30
1. Отключите сервер FossDoc.
2. Далее Вам необходимо зайти в SQL Managment Studio.
3. Сделайте бэкап базы, которую хотите перенести на другой диск (на всякий случай).
4. Нажмите правой кнопкой по нужной вам базе пункт Tasks -> Detach. В открывшемся окне нажмите ок
base1.png (98.13 КБ) 38520 просмотров
base1_1.png (73.57 КБ) 38251 просмотр
5. Зайдите в ту папку, там где физически лежит Ваша база данных (например у Вас C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data) и скопируйте в новую папку или диск два файла, они должны называться как Ваша база данных (расширение файлов MDF и LDF).
6. В SQL Managment Studio, в дереве, станьте на элемент «Databases» и нажмите правую кнопку, затем Attach.
base2.png (101.56 КБ) 38163 просмотра
7. В появившемся окне нажмите Add (добавить) и выберите файл из той папки, куда вы скопировали базу и нажмите ок.
8. Можете запускать сервер FossDoc и продолжать работу.
Вложения base3.png (74.41 КБ) 38035 просмотров
zell Новичок Сообщения: 3 Зарегистрирован: 27 апр 2012, 08:44 2 + 2 = ?: 4
Re: Перенести Базу данных SQL с одного диска на другой
Сообщение zell » 27 апр 2012, 08:47
день добрый!
а как отключите сервер FossDoc.
FossWare Пользователь Сообщения: 380 Зарегистрирован: 19 дек 2008, 17:28
Re: Перенести Базу данных SQL с одного диска на другой
Сообщение FossWare » 27 апр 2012, 08:55
а как отключите сервер FossDoc.
Это можно сделать двумя способами либо зайти в Службы, которая расположена в Пуск -> Администрирование, и остановить службу FD22-FossDoc. Либо в системном трее Windows есть Менеджер серверов FossDoc. И там есть кнопка остановить сервер.
zell Новичок Сообщения: 3 Зарегистрирован: 27 апр 2012, 08:44 2 + 2 = ?: 4
Re: Перенести Базу данных SQL с одного диска на другой
Сообщение zell » 27 апр 2012, 09:38
спасибо за ответ! но у меня этой службы нет (( и при подключении базы(которую перенесли на другой диск) вот ткая ошибка:
TITLE: Microsoft SQL Server Management Studio
——————————
Attach database failed for Server ‘DATASERVER’. (Microsoft.SqlServer.Smo)
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
The file «E:\zupmpp82\zupmpp82.mdf» is compressed but does not reside in a read-only database or filegroup. The file must be
decompressed.
Could not open new database ‘zupmpp82’. CREATE DATABASE is aborted. (Microsoft SQL Server, Error: 5118)
Andrew Разработчики FossDoc Сообщения: 875 Зарегистрирован: 26 дек 2008, 16:03
Re: Перенести Базу данных SQL с одного диска на другой
Сообщение Andrew » 27 апр 2012, 10:13
Найдено в сети интернет:
When the mdf file is created on Vista it is in a compressed version. So when trying to use the same file on Win XP which is an uncompressed disc this problem occurs. The solution to this is marking the mdf and ldf file as uncompressed. Follow the following steps,
1. Right-click the .mdf file and select the properties menu.
2. From the Properties dialog box select the Advanced button
4. From the Advanced Dialog un-tick the «Compress Contents To Save Disk Space check box»
Do the same thing for the .ldf file
Если перевести кратко — файл сжат, и его нужно декопрессировать. Правой кнопкой на mdf-файле, меню «Свойства», потом Дополнительно (или Advanced) — снять галочку с «Compress Contents» (видимо «сжимать содержимое»).
Перемещение пользовательских баз данных
В SQL Server можно переместить файлы данных, журналов и полнотекстового каталога пользовательской базы данных в новое расположение, указав новое расположение файла в предложении FILENAME инструкции ALTER DATABASE . Этот метод применяется к перемещению файлов базы данных в одном экземпляре SQL Server. Чтобы переместить базу данных в другой экземпляр SQL Server или на другой сервер, используйте операции резервного копирования и восстановления или отсоединения и присоединения.
В этой статье рассматривается перемещение файлов пользовательской базы данных. Сведения о перемещении файлов системной базы данных см. в разделе Перемещение системных баз данных.
Рекомендации
Чтобы обеспечить целостность работы пользователей и приложений при перемещении базы данных на другой экземпляр сервера, необходимо повторно создать некоторые или все метаданные базы данных. Дополнительные сведения см. в статье Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера (SQL Server).
Некоторые функции ядра СУБД SQL Server изменяют способ хранения сведений в файлах базы данных. Эти функции ограничены определенными выпусками SQL Server. База данных, содержащая эти функции, не может быть перемещена в выпуск SQL Server, который не поддерживает их. Используйте динамическое административное представление sys.dm_db_persisted_sku_features для просмотра всех функций текущей базы данных, зависящих от выпуска.
Для выполнения процедур, описанных в этой статье, необходимо логическое имя файлов базы данных. Это имя можно получить из столбца name представления каталога sys.master_files .
Начиная с SQL Server 2008 R2 (10.50.x), полнотекстовые каталоги интегрируются в базу данных, а не хранятся в файловой системе. Полнотекстовые каталоги теперь перемещаются автоматически при перемещении базы данных.
Убедитесь, что у учетной записи Служб баз данных SQL Server есть разрешения для нового расположения файлов в файловой системе. Дополнительные сведения см. в статье Настройка разрешений файловой системы для доступа к компоненту ядра СУБД.
Процедура запланированного перемещения
Для запланированного перемещения файлов журнала или данных выполните следующие действия.
-
Для каждого перемещаемого файла выполните следующую инструкцию.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
ALTER DATABASE database_name SET OFFLINE;
Для выполнения этого действия требуется эксклюзивный доступ к базе данных. Если открыто другое соединение к базе данных, инструкция ALTER DATABASE будет заблокирована до тех пор, пока не будут закрыты все соединения. Чтобы переопределить это поведение, используйте предложение WITH . Например, чтобы автоматически выполнить откат и разорвать все остальные соединения с базой данных, выполните инструкцию:
ALTER DATABASE database_name SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE database_name SET ONLINE;
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'');
Перемещение для запланированного обслуживания дисков
Чтобы переместить файл во время процесса запланированного обслуживания дисков, необходимо выполнить нижеприведенные шаги.
-
Для каждого перемещаемого файла выполните следующую инструкцию.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'');
Процедура восстановления после сбоя
Если файл необходимо переместить в новое место из-за аппаратного сбоя, выполните следующие действия.
Если базу данных запустить нельзя, она находится в подозрительном режиме или в невосстановленном состоянии, то файл может быть перемещен только членом предопределенной роли sysadmin.
- Остановите экземпляр SQL Server, если он запущен.
- Запустите экземпляр SQL Server в режиме восстановления только для главного сервера, введя одну из следующих команд в командной строке.
- В случае с экземпляром по умолчанию (MSSQLSERVER) выполните следующую команду.
NET START MSSQLSERVER /f /T3608
NET START MSSQL$instancename /f /T3608
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'');
Примеры
В следующем примере файл журнала базы данных AdventureWorks2022 переносится в новое место во время запланированного перемещения.
USE master; GO -- Return the logical file name. SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'AdventureWorks2022') AND type_desc = N'LOG'; GO ALTER DATABASE AdventureWorks2022 SET OFFLINE; GO -- Physically move the file to a new location. -- In the following statement, modify the path specified in FILENAME to -- the new location of the file on your server. ALTER DATABASE AdventureWorks2022 MODIFY FILE ( NAME = AdventureWorks2022_Log, FILENAME = 'C:\NewLoc\AdventureWorks2022_Log.ldf'); GO ALTER DATABASE AdventureWorks2022 SET ONLINE; GO --Verify the new location. SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'AdventureWorks2022') AND type_desc = N'LOG';
См. также
- ALTER DATABASE (Transact-SQL)
- CREATE DATABASE (SQL Server Transact-SQL)
- Отсоединение базы данных и подключение (SQL Server)
- Перемещение системных баз данных
- Перемещение файлов базы данных
- BACKUP (Transact-SQL)
- RESTORE (Transact-SQL)
- Запуск, остановка, приостановка, возобновление и перезапуск компонента Database Engine, агента SQL и службы браузера SQL Server
Обратная связь
Были ли сведения на этой странице полезными?