Переместить файлы базы данных SQL Server 2008 в новую папку - PullRequest
49 голосов
/ 05 июля 2011

Логическое имя

  • my_Data
  • my_Log

Путь:

  • C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
  • C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

FileName:

  • my.MDF
  • my_1.LDF

Какой будет сценарий sql для перемещения этих файлов в новое место: D:\DATA

База данных работает, поэтому мне нужно закрыть существующие подключения.

Ответы [ 5 ]

85 голосов
/ 05 июля 2011

Вы забыли упомянуть название своей базы данных (это «моя»?).

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.

18 голосов
/ 05 июля 2011

Вы можете использовать параметр «Отсоединить / Присоединить» в SQL Server Management Studio.

Установите этот флажок: Перемещение базы данных с помощью «Отсоединить и присоединить»

6 голосов
/ 13 мая 2013

Чтобы добавить необходимые права доступа к файлам, добавьте и предоставьте право следующему локальному пользователю: SQLServerMSSQLUser $ COMPUTERNAME $ INSTANCENAME, где COMPUTERNAME и INSTANCENAME необходимо заменить на имякомпьютер и экземпляр MSSQL соответственно.

0 голосов
/ 31 августа 2016

Некоторые примечания, дополняющие процесс 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: \ MSSQLData

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

0 голосов
/ 24 мая 2013

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

http://zaboilab.com/sql-server-toolbox/massive-database-migration-between-sql-server-instances-the-complete-procedure

Извините за стороннюю процедуру, но скрипты очень длинные. Вы должны:
- Скриптовые логины с оригинальным SID и HASHED паролем
- Создать скрипт для резервного копирования базы данных, используя метаскрипты
- Создать скрипт для восстановления базы данных, передавая параметры перемещения, используя снова метаскрипты
- Запустите сгенерированные сценарии для исходного и конечного экземпляров.
Подробности смотрите и скачивайте скрипты по ссылке выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...