TomSun

享受编程的快乐!Attitude is everything!

导航

SQL Restore DB

Posted on 2005-07-01 14:25  TomSun  阅读(902)  评论(0)    收藏  举报

 

 1DECLARE @sql nvarchar(4000)
 2DECLARE @dataname nvarchar(100)
 3
 4/* DELETE DB */
 5SET @dataname = N'ednchina'+REPLACE(CONVERT(varchar(10),getdate()-3,20),'-','')
 6SET @sql = N'IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'''+ @dataname +''') DROP DATABASE ['+ @dataname +']'
 7EXECUTE sp_executesql @sql
 8
 9/* Create database */
10SET @dataname = N'ednchina'+REPLACE(CONVERT(varchar(10),getdate(),20),'-','')
11
12SET @sql = N'CREATE DATABASE ' + @dataname
13EXECUTE sp_executesql @sql
14
15/* Restore DB from full backup */
16SET @sql = N'RESTORE DATABASE ' + @dataname + ' FROM DISK=N''D:\backup\sql\X\backupfull.bak''  WITH NORECOVERY,REPLACE,MOVE ''www_X_com_Data'' TO ''D:\sql_data\MSSQL\Data\' + @dataname + '.MDF'',MOVE ''www_X_com_Log'' TO ''D:\sql_data\MSSQL\Data\' + @dataname + '_log.LDF'''
17EXECUTE sp_executesql @sql
18
19/* Restore DB from diff backup */
20SET @sql = N'RESTORE DATABASE ' + @dataname + ' FROM DISK=''D:\backup\sql\X\backupdiff.diff'' WITH RECOVERY'
21EXECUTE sp_executesql @sql
22
23/* Set DB options */
24SET @sql = N'ALTER DATABASE '+ @dataname +' SET RECOVERY SIMPLE'
25EXECUTE sp_executesql @sql
26
27SET @sql = N'dbcc shrinkdatabase ('+ @dataname +', 0, truncateonly)'
28EXECUTE sp_executesql @sql
29/*  Set Login */
30EXEC sp_defaultdb 'asp',@dataname
31
32SET @sql = N'Use '+@dataname+';EXEC sp_adduser ''asp''''asp''''db_owner'''
33EXECUTE sp_executesql @sql