a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

如何還原某一個目錄下的所有數據庫備份文件(2)

發布時間:  2012/6/16 21:40:02

●還原單個數據庫的存儲過程代碼

根據上面分析的方法,這里演示我寫的一個還原單個數據庫的存儲過程代碼,因為代碼是之前寫的,中間因真實世界的特殊情況,修改成幾個版本的存儲過程。當然,如有可能,你可以根據自己所在的真實環境,修改對應部分的代碼,以便滿足自己的需要。

存儲過程sp_RestoreDataBase代碼:

  1. Use master
  2. Go
  3. if object_ID('[sp_restoredatabase]') is not null
  4. Drop Procedure [sp_restoredatabase]
  5. Go
  6. /*
  7. --還原數據庫(v3.2) Andy 2011-2-22
  8. @DatabBaseBakPath nvarchar(260), --數據庫備份路徑(包含備份文件名)
  9. @DatabBaseNewPath nvarchar(260) --新數據庫路徑
  10. @NewDataBaseName nvarchar(128) --新數據庫名
  11. e.g:
  12. --Exec sp_RestoreDataBase 'E:\DatabaseBackup\DE\Support_2008722_14_33_39.bak','D:\SQL2005\DE'
  13. V3.0版本修改說明:
  14. 1.修正了之前版本在還原包含全文索引文件的時候發生的錯誤。
  15. 2.修正了之前版本在還原包含多個數據庫文件和日志文件時發生的錯誤。
  16. V3.1版本說明,增加了參數@Keep_Replication,表示是否保存復制設定
  17. V3.2版本說明,增加了FILE ={ file_number | @file_number } 邏輯判斷,在包含多個備份組,還原最后一個備份組
  18. V3.3 版本說明 ,還原發生錯誤時返回 1
  19. */
  20. CREATE Proc sp_RestoreDataBase
  21. (
  22. @DatabBaseBakPath nvarchar(260),
  23. @DatabBaseNewPath nvarchar(260),
  24. @NewDataBaseName nvarchar(128)=null,
  25. @Keep_Replication bit=0
  26. )
  27. As
  28. Set Nocount On
  29. Begin Try
  30. Declare
  31. @DataBaseName nvarchar(128),
  32. @Sql nvarchar(max),
  33. @SqlDatabaseRename nvarchar(max),
  34. @Enter nvarchar(10)
  35. --檢查文件路徑是否正確
  36. Declare
  37. @Dir nvarchar(4000),
  38. @i int
  39. -- Set @Dir='Dir '+@DatabBaseBakPath
  40. -- Exec @i=xp_cmdshell @Dir,no_output
  41. -- If @i<>0
  42. Exec master.dbo.xp_fileexist @DatabBaseBakPath,@i Output
  43. If @i=0
  44. Begin
  45. Raiserror 50001 N'無效的備份數據庫路徑/文件名!'
  46. Return 1
  47. End
  48. If Charindex('\\',@DatabBaseNewPath)>0
  49. Begin
  50. Raiserror 50001 N'數據庫還原路徑中不能含有''\\''!'
  51. Return 1
  52. End
  53. If Right(Rtrim(@DatabBaseNewPath),1)='\'
  54. Begin
  55. Raiserror 50001 N'數據庫還原路徑的最后一位能含有''\''!'
  56. Return 1
  57. End
  58. Set @Dir='Dir '+@DatabBaseNewPath
  59. Exec @i=xp_cmdshell @Dir,no_output
  60. If @i<>0
  61. Begin
  62. Raiserror 50001 N'無效的數據庫還原路徑!'
  63. Return 1
  64. End
  65. set @DatabBaseNewPath=replace(@DatabBaseNewPath,'"','')
  66. /*
  67. --SQL Server 2005
  68. Declare @BakFileList Table(LogicalName nvarchar(128),PhysicalName nvarchar(260),Type char(1),FileGroupName nvarchar(128),Size numeric(20,0),MaxSize numeric(20,0),FileID bigint,CreateLSN numeric(25,0),DropLSN numeric(25,0) NULL,UniqueID uniqueidentifier,ReadOnlyLSN numeric(25,0) NULL,ReadWriteLSN numeric(25,0) NULL,BackupSizeInBytes bigint,SourceBlockSize int,FileGroupID int,LogGroupGUID uniqueidentifier NULL,DifferentialBaseLSN numeric(25,0) NULL,DifferentialBaseGUID uniqueidentifier,IsReadOnly bit,IsPresent bit)
  69. */
  70. --SQL Server 2008
  71. Declare @BakFileList Table(LogicalName nvarchar(128),PhysicalName nvarchar(260),Type char(1),FileGroupName nvarchar(128),Size numeric(20,0),MaxSize numeric(20,0),FileID bigint,CreateLSN numeric(25,0),DropLSN numeric(25,0) NULL,UniqueID uniqueidentifier,ReadOnlyLSN numeric(25,0) NULL,ReadWriteLSN numeric(25,0) NULL,BackupSizeInBytes bigint,SourceBlockSize int,FileGroupID int,LogGroupGUID uniqueidentifier NULL,DifferentialBaseLSN numeric(25,0) NULL,DifferentialBaseGUID uniqueidentifier,IsReadOnly bit,IsPresent bit,TDEThumbprint varbinary(32))
  72. Insert Into @BakFileList
  73. Exec sp_executesql N'Restore FileListOnly From Disk=@DatabBaseBakPath',N'@DatabBaseBakPath nvarchar(260)',@DatabBaseBakPath
  74. /*
  75. --SQL Server 2005
  76. Declare @BakHeaderInfo Table(BackupName nvarchar(128),BackupDescription nvarchar(255),BackupType smallint,ExpirationDate datetime,Compressed tinyint,Position smallint,DeviceType tinyint,UserName nvarchar(128),ServerName nvarchar(128),DatabaseName nvarchar(128),DatabaseVersion int,DatabaseCreationDate datetime,BackupSize numeric(20,0),FirstLSN numeric(25,0),LastLSN numeric(25,0),CheckpointLSN numeric(25,0),DatabaseBackupLSN numeric(25,0),BackupStartDate datetime,BackupFinishDate datetime,SortOrder smallint,CodePage smallint,UnicodeLocaleId int,UnicodeComparisonStyle int,CompatibilityLevel tinyint,SoftwareVendorId int,SoftwareVersionMajor int,SoftwareVersionMinor int,SoftwareVersionBuild int,MachineName nvarchar(128),Flags int,BindingID uniqueidentifier,RecoveryForkID uniqueidentifier,Collation nvarchar(128),FamilyGUID uniqueidentifier,HasBulkLoggedData bit,IsSnapshot bit,IsReadOnly bit,IsSingleUser bit,HasBackupChecksums bit,IsDamaged bit,BeginsLogChain bit,HasIncompleteMetaData bit,IsForceOffline bit,IsCopyOnly bit,FirstRecoveryForkID uniqueidentifier,ForkPointLSN numeric(25,0) NULL,RecoveryModel nvarchar(60),DifferentialBaseLSN numeric(25,0) NULL,DifferentialBaseGUID uniqueidentifier,BackupTypeDescription nvarchar(60),BackupSetGUID uniqueidentifier NULL)
  77. */
  78. --SQL Server 2008
  79. Declare @BakHeaderInfo Table(BackupName nvarchar(128),BackupDescription nvarchar(255),BackupType smallint,ExpirationDate datetime,Compressed tinyint,Position smallint,DeviceType tinyint,UserName nvarchar(128),ServerName nvarchar(128),DatabaseName nvarchar(128),DatabaseVersion int,DatabaseCreationDate datetime,BackupSize numeric(20,0),FirstLSN numeric(25,0),LastLSN numeric(25,0),CheckpointLSN numeric(25,0),DatabaseBackupLSN numeric(25,0),BackupStartDate datetime,BackupFinishDate datetime,SortOrder smallint,CodePage smallint,UnicodeLocaleId int,UnicodeComparisonStyle int,CompatibilityLevel tinyint,SoftwareVendorId int,SoftwareVersionMajor int,SoftwareVersionMinor int,SoftwareVersionBuild int,MachineName nvarchar(128),Flags int,BindingID uniqueidentifier,RecoveryForkID uniqueidentifier,Collation nvarchar(128),FamilyGUID uniqueidentifier,HasBulkLoggedData bit,IsSnapshot bit,IsReadOnly bit,IsSingleUser bit,HasBackupChecksums bit,IsDamaged bit,BeginsLogChain bit,HasIncompleteMetaData bit,IsForceOffline bit,IsCopyOnly bit,FirstRecoveryForkID uniqueidentifier,ForkPointLSN numeric(25,0) NULL,RecoveryModel nvarchar(60),DifferentialBaseLSN numeric(25,0) NULL,DifferentialBaseGUID uniqueidentifier,BackupTypeDescription nvarchar(60),BackupSetGUID uniqueidentifier NULL,CompressedBackupSize numeric(20,0))
  80. Insert Into @BakHeaderInfo
  81. Exec sp_executesql N'Restore HeaderOnly From Disk=@DatabBaseBakPath',N'@DatabBaseBakPath nvarchar(260)',@DatabBaseBakPath
  82. If Isnull(@NewDataBaseName,'')>'' --使用新的數據庫名,要是沒有指定就使用原來的數據庫名
  83. Set @DataBaseName=@NewDataBaseName
  84. Else
  85. Begin
  86. Select @DataBaseName=DatabaseName From @BakHeaderInfo
  87. End
  88. Set @Enter=char(13)+Char(10)
  89. Select @Sql=Isnull(@Sql+@Enter,'')+'Kill '+Rtrim(spid) From master.sys.sysprocesses Where dbid=db_id(@DataBaseName)
  90. Exec(@Sql)
  91. Set @Sql=N'Restore DataBase @DataBaseName From Disk=@DatabBaseBakPath With File=??,' --+(Select 'File='+rtrim(max(Position))+', ' From @BakHeaderInfo)
  92. Select @Sql=@Sql+'Move '''+LogicalName+''' To '''+@DatabBaseNewPath+'\'+@DataBaseName+
  93. Case
  94. When [Type]='D' And Not Exists(Select 1 From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID) Then ''
  95. When [Type]='D' Then '_'+(Select Rtrim(Count(*)) From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID)
  96. When [Type]='L' And Not Exists(Select 1 From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID) Then '_Log'
  97. When [Type]='L' Then '_Log'+(Select Rtrim(Count(*)) From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID)
  98. Else ''
  99. End+Right(PhysicalName,Charindex('.',Reverse(PhysicalName)))+''',',
  100. @SqlDatabaseRename=Isnull(@SqlDatabaseRename+@Enter,'')+
  101. Case
  102. When [Type]='D' And LogicalName=@DataBaseName Then ''
  103. When [Type]='D' And LogicalName Like @DataBaseName+'[_]%' Then ''
  104. When [Type]='L' And LogicalName Like @DataBaseName+'[_]Log%' Then ''
  105. When [Type]='F' Then ''
  106. Else
  107. 'Alter DataBase '+Quotename(@DataBaseName)+' Modify File(Name='''+LogicalName+''',NewName='''+@DataBaseName+
  108. Case
  109. When [Type]='D' And Not Exists(Select 1 From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID) Then ''
  110. When [Type]='D' Then '_'+(Select Rtrim(Count(*)) From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID)
  111. When [Type]='L' And Not Exists(Select 1 From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID) Then '_Log'
  112. When [Type]='L' Then '_Log'+(Select Rtrim(Count(*)) From @BakFileList Where [Type]=a.[Type] And FileID<a.FileID)
  113. Else ''
  114. End+''')'
  115. End
  116. From @BakFileList As a
  117. Set @Sql=@Sql+'Replace'
  118. If @Keep_Replication=1
  119. Set @Sql=@Sql+'Keep_Replication'
  120. Declare @sql1 nvarchar(max),
  121. @MaxPosition int
  122. Select @MaxPosition=Position
  123. From @BakHeaderInfo As a
  124. Where a.BackupType=1
  125. And Not Exists(Select 1 From @BakHeaderInfo Where BackupType=a.BackupType And Position>a.Position)
  126. Select @sql1=isnull(@sql1+char(13)+char(10),'')+replace(@sql,'??',rtrim(Position)) +
  127. Case When Exists(Select 1 From @BakHeaderInfo Where Position>a.Position) Then N',Norecovery' Else N',Recovery' End
  128. From @BakHeaderInfo As a
  129. Where Position>=@MaxPosition
  130. Order By Position
  131. Print '還原數據庫: '+@DataBaseName
  132. -- Print @sql1
  133. Exec sp_executesql @sql1,N'@DataBaseName nvarchar(128),@DatabBaseBakPath nvarchar(260)',@DataBaseName,@DatabBaseBakPath
  134. If @SqlDatabaseRename>''
  135. Exec(@SqlDatabaseRename)
  136. End Try
  137. Begin Catch
  138. Declare @Error nvarchar(1024)
  139. Set @Error=ERROR_MESSAGE()
  140. Raiserror 50001 @Error
  141. Return 1
  142. End Catch
  143. Set Nocount Off
  144. Go

存儲過程測試:

  1. use master
  2. Go
  3. Exec dbo.sp_RestoreDataBase 'E:\DBBackup\dbA2011-09-05.bak','E:\DATA\SQL2008DE01'
  4. go


更多請聯系:億恩科技
QQ:1613285598   0371-63322220


本文出自:億恩科技【www.ibaoshan.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    日韩精品人妻无码久久影院| 性生交大片免费看| 成人无码区免费AⅤ片在线观看| 性色ΑV一二三天美传媒| 免费人成激情视频在线观看冫| 国产精品拍天天在线 | 内射丰满熟妇18p一区二区| 国产精品你懂的在线播放| 最新高清中文字幕免费MV| 我半夜摸妺妺的奶摸到高潮 | 一本一道AV无码中文字幕| 欧美久久高潮久久高潮| 国产沙发午睡系列999| CHINESE叫床对白VIDEOS| 亚洲AV永久无码精品无码少妇| 人妻丰满熟妇av无码区乱| 精品一区二区三区在线视频| 番剧初恋不可能是亲姐姐| 正在播放熟妇群老熟妇456| 五十路○の豊満な肉体| 欧美日本国产VA高清CABAL| 黑人巨大跨种族VIDEO| 中文人妻无码一区二区三区信息| 无码午夜福利片在线观看| 欧美精品黑人成人另类视频| 狠狠色婷婷久久一区二区三区 | 闺蜜张开腿让我爽了一夜| 曰本女人牲交全视频播放毛片| 无码人妻丰满熟妇啪啪7774| 欧美午夜性春猛交ⅩXXX| 精品人妻人人做人人爽| 国产AV天堂无码一区二区三区 | 色欲AV无码一区二区三区| 麻豆成人久久精品二区三区免费| 国产精品欧美久久久久无广告| A级毛片免费高清视频| 亚洲精品亚洲人成在线观看| 亚洲码与欧洲码一二三四区别| 久久这里精品国产99丫E6| 国产精品无码一区二区三级| JAVAPARSER少妇高潮| 亚洲日本高清成人AⅤ片| 天天爽夜夜爽人人爽| 欧美黑人又大又粗XXXXX| 精品国产AⅤ无码一区二区蜜桃| 丰满的继牳3中文字幕系列免费| 亚洲VA久久久噜噜噜久久天堂| 日产2021免费一二三四| 美日韩一区二区三区| 国产性大战XXXXX久久久| 成人国产一区二区精品小说| 在线播放国产一区二区三区| 亚洲AV无码一区二区少妇 | YY1111111少妇无码影院| 亚洲一区制服无码中字| 午夜A级理论片在线播放琪琪 | 女女互磨互喷水高潮LES呻吟| 精品久久久久久天美传媒| 丰满人妻被快递员侵犯的电影| 1024久久亚洲精品无码| 亚洲乱码中文字幕综合234| 天堂资源在线WWW在线观看| 欧美性受XXXX视频| 久久婷婷五月综合色欧美| 国产无套无码AⅤ在线观看| 成熟丰满熟妇高潮XXXXX视频| 重口00Ⅹ变态另类| 亚洲精品欧美精品日韩精品| 无码人妻AⅤ一区二区三区| 人人超碰人人超级碰国| 噜噜私人影片在线看片| 精品AV综合一区二区三区| 国产精品成人亚洲777| 一区三区四区产品乱码| 亚洲AV无码麻豆一区二区三区 | 大白屁股白浆XXⅩSS| 51成品网站W灬源码16| 亚洲熟妇色XXXXXX爽| 性色欲情网站IWWW九文堂| 色噜噜精品一区二区三区| 久久久不卡国产精品一区二区| 国产美女精品视频线免费播放软件| 被滋润的娇妻疯狂呻吟| 中文字幕在线精品视频入口一区| 亚洲日本乱码在线观看| 亚欧免费无码AⅤ在线观看蜜桃| 色婷婷AV一区二区三区| 欧洲女人牲交视频免费| 免费A级毛片出奶水| 久久久AV波多野一区二区| 韩国av一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟 | 乱熟女高潮一区二区| 精品国产自在现线看久久 | 精品国产乱码久久久久久小说 | 粗大的内捧猛烈进出少妇| 99久RE热视频这只有精品6| 一面膜上边一面膜下边日本| 亚洲精品国产成人AV| 性欧美ⅩXXXX极品少妇| 天堂中文АⅤ在线| 日韩精品无码人成视频手机| 欧美性白人极品1819HD| 免费A级毛片18禁网站APP| 久久精品亚洲精品国产色婷| 黑人vs日本人ⅩXXXHD| 国产精品VⅠDEOXXXX国产| 厨房里抱着岳丰满大屁股| FREESEXVIDEOS性亚| 中文字幕无码一线二线三线| 野花社区大全免费观看3| 亚洲乱亚洲乱少妇无码| 亚洲AV无码专区国产乱码京东传| 无码人妻精品一区二区在线视频| 少妇人妻陈艳和黑人教练| 日本三线和韩国三线的市场定位 | 日本一区二区在线播放| 欧美性猛交XXXX乱大交丰满| 免费无码的AV片在线观看| 国产一二三四2021精字窝| 国产好大好硬好爽免费不卡| 成人奭片免费观看| 锕锕锕锕锕锕锕好疼JK| AV无码久久久久不卡网站蜜桃| 亚洲精品无码久久久久APP| 亚洲A∨国产AV综合AV网站| 挺进朋友人妻的身体里| 深夜A级毛片免费视频| 日韩无码视频一区| 日本少妇三级HD激情在线观看| 热久久99这里有精品综合久久| 欧美肥妇BWBWBWBXX| 精品无人区无码乱码毛片国产| 好男人 好资源在线 视频| 国产无遮挡又黄又爽又色| 国产精品任我爽爆在线播放 | 丝袜一区二区三区在线播放| 日韩乱妇乱女熟妇熟女AV| 人与善交XUANWEN18| 人妻系列无码专区久久五月天| 青草久久久国产线免观蜜芽| 欧美日韩一区二区综合| 欧美片内射欧美美美妇| 欧美激情综合色综合啪啪五月| 你下水好多下水道BD| 年级老师的滋味4| 欧美A级毛欧美1级A大片式放| 欧美IPHONEXSMAX免费| 女人和拘做受全过程| 欧美成人精品高清在线播放| 内射后入在线观看一区| 内谢少妇XXXXX8老少交| 欧美超大胆裸体XX视频| 欧美顶级METART裸体全部自| 欧美饥渴熟妇高潮喷水水| 欧美人与动牲交A精品| 欧美一级 片内射欧美乱强| 欧洲一本到卡二卡三卡乱码| 人妻被按摩到潮喷中文不卡| 人妻无码一区二区三区免费| 日本亚洲色欲网站WWW| 日韩熟妇无码字幕视频毛片 | 无码人妻丰满熟妇惹区| 无遮无挡爽爽免费毛片| 性爱xxxx在线xxxx欧美| 亚洲AV日韩精品久久久久久A | 无码人妻丰满熟妇惹区| 先の欲求不満な人妻无码| 亚洲AV成人AV天堂| 亚洲成A人片在线观看无遮挡 | 幼儿免费网站精品幼儿1| 真人无码作爱免费视频网站| 中文字幕无码精品亚洲资源网| 3D动漫同人精品无码专区 | 无码精品人妻一区二区三区人妻斩| 人妻体内射精一区二区| 人妻系列综合第一页| 日韩无码视频一区二区三区| 色欲蜜臀av无码久久浪潮一区| 天堂AV亚洲ITV在线AⅤ| 无码任你躁久久久久久| 亚洲AV成人综合网伊人APP| 亚洲国产精品一区二区久久HS| 亚洲午夜无码久久久久小说| 诱女偷伦初尝云雨H| 中文字幕日产无码| 99精品一区二区三区无码吞精| JAPANESE娇小侵犯| 成人毛片18女人毛片免费看快色| 绯色AV永久无码一区二区蜜臀| 国产粉嫩馒头无套内在线观看免费| 国产乱人伦偷精品视频免| 韩国好看女性高级感美妆| 精品人妻少妇一区| 久久久久久人妻一区精品| 男女久久久国产一区二区三区| 青梅被从小摸到大H补课1视频| 色欲av夜夜嗨av性色av| 无人区码一码二码三码在线 | 国内揄拍国内精品少妇|