Я думаю наиболее резкое различие в выборе структур данных.
В Java или C я определяю структуры или классы очень строго. Если я должен добавить свойство, я возвращаюсь и изменяю определение.
В Perl я буду просто использовать хеш и 'изобретать' ключи, поскольку я кодирую.
use master
go
sp_detach_db 'mydb'
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;
sp_attach_db 'mydb', 'D:\Data\mydb.mdf', 'E:\Log\mydb_log.ldf'
There's more detail at this Microsoft KB article.
Другой способ - отсоединить файлы базы данных (база данных-> задачи-> отсоединить), переместить их на новый диск и затем снова подключить. Но способ, описанный Jay S, самый простой.
Для полной безопасности я бы сделал следующее:
Пример сценария:
-- 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 :.