declare @DataBaseName nvarchar(512) declare @command nvarchar(4000) declare @fileName nvarchar(255) declare @Files varchar(8000) SET NOCOUNT ON select @Path = N'C:\INGRESE AQUI EL PATH DONDE ESTAN LOS MDF!\' create table #smoPrimaryFileProp(property sql_variant NULL, value sql_variant NULL) create table #SmoPrimayChildren(status INT,fileid INT,name nvarchar(512),filename nvarchar(512)) create table #filetmp (Name nvarchar(255) NOT NULL, depth int NOT NULL, IsFile bit NULL ) --Obtiene todos los archivos que se encuentran en el directorio y almacena el resultado --en una tabla temporal. insert #filetmp EXECUTE master.dbo.xp_dirtree @Path, 1, 1 DECLARE archivos CURSOR FOR SELECT Name FROM #filetmp WHERE UPPER(SUBSTRING(Name,LEN(Name)-2,3)) = 'MDF' OPEN archivos FETCH NEXT FROM archivos INTO @fileName WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRY SET @Files = '' --Obtiene el nombre de la base de datos. SELECT @command = 'DBCC checkprimaryfile (N'''+ @Path + '\' + @fileName + ''' , 2)' INSERT #smoPrimaryFileProp EXEC (@command) SELECT @DataBaseName = RTRIM(CONVERT(varchar(512),value)) FROM #smoPrimaryFileProp WHERE property = 'Database name' --Obtiene todos los archivos dependientes de la base y almacena el resulta --en una tabla temporal. SELECT @command = 'DBCC checkprimaryfile (N''' + @Path + '\' + @fileName + ''' , 3)' INSERT #SmoPrimayChildren EXEC (@command) SELECT @Files = @Files + '(FILENAME = N''' + rtrim(filename) + '''),' FROM #SmoPrimayChildren SET @Files = SUBSTRING(@Files,1, LEN(@Files) -1 ) --Arma el comando ATTACH y lo ejectua. SELECT @command = 'CREATE DATABASE [' + @DataBaseName + '] ON ' + @Files + ' FOR ATTACH' EXEC (@command) END TRY BEGIN CATCH --Si el comando DBCC tira error, es porque el .mdf ya esa siendo usado en una base --y no necesita ser attachado. PRINT @fileName + ',' + ERROR_MESSAGE() END CATCH DELETE FROM #smoPrimaryFileProp DELETE FROM #SmoPrimayChildren FETCH NEXT FROM archivos INTO @fileName END CLOSE archivos DEALLOCATE archivos DROP TABLE #filetmp DROP TABLE #smoPrimaryFileProp DROP TABLE #SmoPrimayChildren