DECLARE @databasedir varchar(200)
SET @databasedir = 'F:\SQLServer\Data\'

/* 目录结构 */
DECLARE @t table(id int identity(1,1),subdirectory nvarchar(255),depth int,i int)

INSERT INTO @t(subdirectory,depth,i)
EXEC master..xp_dirtree @databasedir,0,1

DELETE FROM @t WHERE subdirectory NOT LIKE '%.mdf'
DECLARE @filename nvarchar(255),@dbname nvarchar(255),@filename1 nvarchar(255),@subdirectory nvarchar(255)
DECLARE @cmd nvarchar(4000)
create table #smoPrimaryFileProp(property sql_variant NULL, value sql_variant NULL

WHILE (SELECT COUNT(*FROM @t> 0
BEGIN
    
SELECT TOP 1 @subdirectory = subdirectory FROM @t
    
SELECT @fileName = @databasedir+@subdirectory;
BEGIN TRY
    
SET @cmd = 'dbcc checkprimaryfile (N'''+ @fileName + ''' , 2)'

    
TRUNCATE TABLE #smoPrimaryFileProp
    
insert #smoPrimaryFileProp exec (@cmd)

    
SELECT @dbname = CAST([value] AS nvarchar(255)) 
    
FROM #smoPrimaryFileProp WHERE [property] = 'Database name'
    
    
SELECT @filename1 = REPLACE(@fileName,'.mdf','_log.LDF');

    
    
EXEC sp_attach_db 
    
@dbname,
    
@fileName,@filename1
    
END TRY
BEGIN CATCH
END CATCH


    
DELETE FROM @t WHERE subdirectory = @subdirectory
END

DROP TABLE #smoPrimaryFileProp

相关文章:

  • 2022-12-23
  • 2021-09-20
  • 2021-10-31
  • 2021-09-19
  • 2022-12-23
  • 2021-04-09
猜你喜欢
  • 2022-01-30
  • 2021-11-18
  • 2021-12-26
  • 2021-07-19
  • 2022-02-24
  • 2022-12-23
  • 2021-07-23
相关资源
相似解决方案