3 parametry (jméno DB + 2 soubory MDF a LDF) jsou "kopec udaju"? Min parametru uz tam ani dat nemuzes
Co ti brani si to vybrat, udelat z toho skript a pak spustit?
Tohle ti vypise vsechny DB vcetne souboru
SELECT
db.name AS DBName,
type_desc AS FileType,
Physical_Name AS Location
FROM
sys.master_files mf
INNER JOIN
sys.databases db ON db.database_id = mf.database_id
A ty z toho potrebujes udelat skript:
CREATE DATABASE MyAdventureWorks
ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'),
(FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf')
FOR ATTACH;
Takze si spust tohle, zkopiruj sloupec a mas rovnou skript na hromadne pripojeni vsech DB:
select prikaz = 'create database ' + db.name + ' on (filename = ''' + mf.Physical_Name + '''), (filename = ''' + lf.physical_name + ''') for attach; go;'
from sys.databases db
join sys.master_files mf ON db.database_id = mf.database_id and mf.type_desc = 'ROWS'
left outer join sys.master_files lf ON db.database_id = lf.database_id and lf.type_desc = 'LOG'
where not db.Name in ('master', 'tempdb', 'model', 'msdb')
Predpokladem je, ze kazda databaze ma jen MDF a LDF soubor, neni rozhozena do vice souboru. Ale to si zkontrolujes prvnim vypisem
Podobne si muzes udelat skript na detach vseho, ten bude jednodussi, protoze ti staci vypis ze sys.master_files