Перенос файлов базы данных SQL Server 2008 в новое местоположение папки
Логическое имя
Path:
-
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
-
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
FileName:
Каким будет sql script, чтобы переместить эти файлы в новое место: D:\DATA
База данных активна, поэтому мне нужно закрыть существующие подключения.
Ответы
Ответ 1
Вы забыли упомянуть название своей базы данных (это "мой"?).
ALTER DATABASE my SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE my SET OFFLINE;
ALTER DATABASE my MODIFY FILE
(
Name = my_Data,
Filename = 'D:\DATA\my.MDF'
);
ALTER DATABASE my MODIFY FILE
(
Name = my_Log,
Filename = 'D:\DATA\my_1.LDF'
);
Теперь вы должны вручную перенести файлы из своего текущего местоположения в D:\Data\(и не забудьте переименовать их вручную, если вы изменили их в команде MODIFY FILE)... затем вы можете вернуть базу данных онлайн:
ALTER DATABASE my SET ONLINE;
ALTER DATABASE my SET MULTI_USER;
Это предполагает, что учетная запись службы SQL Server имеет достаточные привилегии в папке D:\Data \. Если нет, вы получите ошибки в команде SET ONLINE.
Ответ 2
В SQL Server Management Studio можно использовать опцию Detach/Attach.
Проверьте это: Перемещение базы данных с помощью отсоединения и прикрепления
Ответ 3
Чтобы добавить привилегии, необходимые для файлов, добавьте и предоставите право следующему локальному пользователю: SQLServerMSSQLUser $COMPUTERNAME $INSTANCENAME, где COMPUTERNAME и INSTANCENAME необходимо заменить на имя компьютера и экземпляр MSSQL соответственно.
Ответ 4
Это полная процедура для переноса базы данных и логинов с места на новый, сценариев входа в систему и перемещения файлов данных и файлов журнала в пункт назначения. Все, используя метаскрипты.
http://zaboilab.com/sql-server-toolbox/massive-database-migration-between-sql-server-instances-the-complete-procedure
Извините за процедуру вне сайта, но скрипты очень длинные. Вы должны:
- Script логин с оригинальным паролем SID и HASHED
- Создать Script для резервного копирования базы данных с помощью метаскриптов
- Создайте Script, чтобы восстановить базу данных, перемещая параметры перевода, используя снова метаскрипты
- Запустите сгенерированные скрипты в экземпляре источника и получателя.
Смотрите и загружайте скрипты по ссылке выше.
Ответ 5
Некоторые примечания, дополняющие процесс ALTER DATABASE:
1) Вы можете получить полный список баз данных с логическими именами и полными путями файлов MDF и LDF:
USE master SELECT name, physical_name FROM sys.master_files
2) Вы можете вручную перемещать файлы с помощью команды перемещения CMD:
Переместить "Источник" "Назначение"
Пример:
md "D:\MSSQLData"
Move "C:\test\SYSADMIT-DB.mdf" "D:\MSSQLData\SYSADMIT-DB_Data.mdf"
Move "C:\test\SYSADMIT-DB_log.ldf" "D:\MSSQLData\SYSADMIT-DB_log.ldf"
3) Вы должны изменить путь базы данных по умолчанию для создания новых баз данных. Путь по умолчанию получен из реестра Windows.
Вы также можете изменить с помощью T-SQL, например, чтобы установить назначение по умолчанию: D:\MSSQLDatap >
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\MSSQLData'
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'D:\MSSQLData'
GO
Извлечен из: http://www.sysadmit.com/2016/08/mover-base-de-datos-sql-server-a-otro-disco.html