Что надлежащий путь состоит в том, чтобы переместить базу данных от одного диска до другого в SQL Server 2005?

Я думаю наиболее резкое различие в выборе структур данных.

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

В Perl я буду просто использовать хеш и 'изобретать' ключи, поскольку я кодирую.

25
задан Kilhoffer 13 July 2009 в 14:37
поделиться

3 ответа

Detach the Database:

use master
go 
sp_detach_db 'mydb'

Move the Database files (Xcopy through xp_cmdshell shown):

DECLARE @SRCData nvarchar(1000)
SET @SRCData = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mydb.mdf';
DECLARE @SRCLog nvarchar(1000)
SET @SRCLog = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mydb_log.ldf';
DECLARE @FILEPATH nvarchar(1000);
DECLARE @LOGPATH nvarchar(1000);
SET @FILEPATH = N'xcopy /Y ' + @SRCData + N' D:\Data';
SET @LOGPATH = N'xcopy /Y ' + @SRCLog + N' E:\Log';
exec xp_cmdshell @FILEPATH;
exec xp_cmdshell @LOGPATH;

ReAttach Database:

sp_attach_db 'mydb', 'D:\Data\mydb.mdf', 'E:\Log\mydb_log.ldf'

There's more detail at this Microsoft KB article.

27
ответ дан 28 November 2019 в 20:51
поделиться

Другой способ - отсоединить файлы базы данных (база данных-> задачи-> отсоединить), переместить их на новый диск и затем снова подключить. Но способ, описанный Jay S, самый простой.

11
ответ дан 28 November 2019 в 20:51
поделиться

Для полной безопасности я бы сделал следующее:

  1. Резервное копирование базы данных в файл BAK.
  2. Переведите текущую базу данных в автономный режим или удалите ее, если хотите.
  3. Восстановить базу данных и изменить расположение файлов MDF и LDF.

Пример сценария:

-- Get the file list from a backup file.  
-- This will show you current logical names and paths in the BAK file
RESTORE FILELISTONLY FROM disk = N'C:\Backups\MyDatabaseName.bak'

-- Perform the restore of the database from the backup file.  
-- Replace 'move' names (MDFLogicalName, LDFLogicalName) with those found in 
-- the previous filelistonly command
restore database MyDatabaseName
from disk = N'C:\Backups\MyDatabaseName.bak'
with move 'MDFLogicalName' to 'D:\SQLData\MyDatabaseName.mdf',
     move 'LDFLogicalName' to 'D:\SQLLogs\MyDatabaseName_log.ldf',
replace, stats=10;

Примечания

Первый сценарий предоставит вам текущие имена и пути, которые вам понадобятся во втором сценарии. Второй сценарий восстанавливает базу данных обратно к имени, которое вы хотите, но вы можете изменить место хранения. В приведенном выше примере он перемещает файлы MDF и LDF на диск D :.

9
ответ дан 28 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: