(4.20)分离附加操作

关键词;sql server分离、sql server附加、分离附加

--附加
USE
master GO DECLARE @new_path nvarchar(200),@new_log_path nvarchar(200) DECLARE @is_file_exist INT; SET @new_path=N'D:\dandantang\data\' SET @new_log_path=N'E:\dandantang\dblog\' DECLARE @t_driver TABLE (Drive CHAR(1),MB_Free INT); -- 该表变量保存各分区的剩余空间信息 INSERT INTO @t_driver EXEC master.dbo.xp_fixeddrives; -- 填充分区剩余空间信息 IF NOT EXISTS(SELECT 1 FROM @t_driver WHERE Drive ='e') SET @new_log_path = N'D:\dandantang\dblog\' declare @file nvarchar(400),@log_file nvarchar(400) select @file=@new_path+'Db_Tank_Data.mdf' ,@log_file=@new_log_path+'Db_Tank_log.ldf' EXEC sp_attach_db @dbname = N'Db_Tank', @filename1 =@file, @filename2 = @log_file select @file=@new_path+'Db_GMS_Data.mdf' ,@log_file=@new_log_path+'Db_GMS_log.ldf' EXEC sp_attach_db @dbname = N'Db_GMS', @filename1 =@file, @filename2 = @log_file select @file=@new_path+'Db_Logs_Data.mdf' ,@log_file=@new_log_path+'Db_Logs_log.ldf' EXEC sp_attach_db @dbname = N'Db_Logs', @filename1 =@file, @filename2 = @log_file select @file=@new_path+'Db_Mart_Data.mdf' ,@log_file=@new_log_path+'Db_Mart_log.ldf' EXEC sp_attach_db @dbname = N'Db_Mart', @filename1 =@file, @filename2 = @log_file select @file=@new_path+'Db_Audit_Data.mdf' ,@log_file=@new_log_path+'Db_Audit_log.ldf' EXEC sp_attach_db @dbname = N'Db_Audit', @filename1 =@file, @filename2 = @log_file select @file=@new_path+'Db_Del_Data.mdf' ,@log_file=@new_log_path+'Db_Del_log.ldf' EXEC sp_attach_db @dbname = N'Db_Del', @filename1 =@file, @filename2 = @log_file select @file=@new_path+'Db_Interface_Data.mdf' ,@log_file=@new_log_path+'Db_Interface_log.ldf' EXEC MASTER.dbo.xp_fileexist @file,@is_file_exist OUTPUT --有些区没有Db_Interface库 IF @is_file_exist = 1 BEGIN EXEC sp_attach_db @dbname = N'Db_Interface', @filename1 =@file, @filename2 = @log_file EXEC sp_dbcmptlevel Db_Interface,90 ALTER DATABASE Db_Interface SET RECOVERY SIMPLE END GO EXEC sp_dbcmptlevel Db_Tank,90 EXEC sp_dbcmptlevel Db_GMS,90 EXEC sp_dbcmptlevel Db_Logs,90 EXEC sp_dbcmptlevel Db_Mart,90 EXEC sp_dbcmptlevel DB_Audit,90 GO ALTER DATABASE Db_Tank SET PAGE_VERIFY CHECKSUM ALTER DATABASE Db_GMS SET PAGE_VERIFY CHECKSUM ALTER DATABASE Db_Logs SET PAGE_VERIFY CHECKSUM ALTER DATABASE Db_Mart SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE Db_Tank MODIFY FILE(NAME='Db_Tank_Data',FILEGROWTH=128MB) ALTER DATABASE Db_Tank MODIFY FILE(NAME='Db_Tank_Log',FILEGROWTH=64MB) ALTER DATABASE Db_Logs MODIFY FILE(NAME='Db_Logs_Data',FILEGROWTH=128MB) ALTER DATABASE Db_Logs MODIFY FILE(NAME='Db_Logs_Log',FILEGROWTH=64MB) GO ALTER DATABASE Db_Tank SET MULTI_USER,Online ALTER DATABASE Db_GMS SET MULTI_USER,Online ALTER DATABASE Db_Logs SET MULTI_USER,Online ALTER DATABASE Db_Mart SET MULTI_USER,Online GO


--只有mdf附加

CREATE DATABASE [Db_Tank] ON
( FILENAME = N'D:\dandantang\data\Db_Tank_Data.mdf' )
FOR ATTACH


2、收缩分离

USE [master]
GO

IF DB_ID('Db_Tank_Copy') IS NOT NULL
BEGIN
    ALTER DATABASE Db_Tank_Copy SET SINGLE_USER WITH ROLLBACK AFTER 1
    DROP DATABASE Db_Tank_Copy
END
GO

IF DB_ID('Db_Tank') IS NOT NULL
BEGIN
    ALTER DATABASE Db_Tank SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (Db_Tank, TRUNCATEONLY)
    EXEC sp_detach_db 'Db_Tank'
END
GO

IF DB_ID('Db_Logs') IS NOT NULL
BEGIN
    ALTER DATABASE Db_Logs SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (Db_Logs, TRUNCATEONLY)
    EXEC sp_detach_db 'Db_Logs'
END
GO

IF DB_ID('Db_GMS') IS NOT NULL
BEGIN
    ALTER DATABASE Db_GMS SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (Db_GMS, TRUNCATEONLY)
    EXEC sp_detach_db 'Db_GMS'
END
GO

IF DB_ID('Db_Mart') IS NOT NULL
BEGIN
    ALTER DATABASE Db_Mart SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (Db_Mart, TRUNCATEONLY)
    EXEC sp_detach_db 'Db_Mart'
END
GO

IF DB_ID('Db_Interface') IS NOT NULL
BEGIN
    ALTER DATABASE Db_Interface SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (Db_Interface, TRUNCATEONLY)
    EXEC sp_detach_db 'Db_Interface'
END
GO

IF DB_ID('db_server') IS NOT NULL
BEGIN
    ALTER DATABASE db_server SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (db_server, TRUNCATEONLY)
    EXEC sp_detach_db 'db_server'
END
GO

IF DB_ID('Db_Del') IS NOT NULL
BEGIN
    ALTER DATABASE Db_Del SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (Db_Del, TRUNCATEONLY)
    EXEC sp_detach_db 'Db_Del'
END
GO

IF DB_ID('Db_Audit') IS NOT NULL
BEGIN
    ALTER DATABASE Db_Audit SET SINGLE_USER WITH ROLLBACK AFTER 1
    DBCC SHRINKDATABASE (Db_Audit, TRUNCATEONLY)
    EXEC sp_detach_db 'Db_Audit'
END
GO

猜你喜欢

转载自www.cnblogs.com/gered/p/10475809.html