Sql Server изменяет данные и путь к журналу существующей базы данных

У меня есть установка SQL Server 2008 с почти 15 работающими на ней базами данных. Теперь из-за нехватки пространства я хотел бы переместить путь данных на другой диск. Какова наилучшая практика для этого. Пожалуйста, объясните в деталях, если включаете какие-либо команды SQL, поскольку я относительно новичок в администрировании SQL Server.

Примечание. Я уже изменил путь в свойствах SQL-сервера из SQL Management Studio 2008 до нового пути. Но мне также хотелось бы, чтобы существующие базы данных находились на новом пути.

Ответ 1

Сначала отделите базу данных:

USE master;
GO
-- Important! We need to drop the existing connections.
ALTER DATABASE DBName SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_detach_db @dbname = N'DBName';
GO

Следующий шаг - скопируйте файлы .mdf и .ldf этих файлов базы данных в новое место

И затем привязка базы данных:

USE master;
EXEC sp_attach_db @dbname = N'dbName', 
@filename1 = N'',  --path do .mdf
@filename2 = N'';  --path to .ldf
GO

Если вы не хотите прикреплять и отделять все базы данных один за другим, вы можете сгенерировать SQL script для присоединения и отсоединения всех необходимых вам баз данных (например, системы execept), используя curosr, который ищет в sys.databases динамический вид управления. Но не забудьте скопировать файлы базы данных.