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

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

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

發(fā)布時間:  2012/6/16 21:40:08

●還原單個數(shù)據(jù)庫的存儲過程代碼

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

存儲過程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. --還原數(shù)據(jù)庫(v3.2) Andy 2011-2-22
  8. @DatabBaseBakPath nvarchar(260), --數(shù)據(jù)庫備份路徑(包含備份文件名)
  9. @DatabBaseNewPath nvarchar(260) --新數(shù)據(jù)庫路徑
  10. @NewDataBaseName nvarchar(128) --新數(shù)據(jù)庫名
  11. e.g:
  12. --Exec sp_RestoreDataBase 'E:\DatabaseBackup\DE\Support_2008722_14_33_39.bak','D:\SQL2005\DE'
  13. V3.0版本修改說明:
  14. 1.修正了之前版本在還原包含全文索引文件的時候發(fā)生的錯誤。
  15. 2.修正了之前版本在還原包含多個數(shù)據(jù)庫文件和日志文件時發(fā)生的錯誤。
  16. V3.1版本說明,增加了參數(shù)@Keep_Replication,表示是否保存復制設(shè)定
  17. V3.2版本說明,增加了FILE ={ file_number | @file_number } 邏輯判斷,在包含多個備份組,還原最后一個備份組
  18. V3.3 版本說明 ,還原發(fā)生錯誤時返回 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'無效的備份數(shù)據(jù)庫路徑/文件名!'
  46. Return 1
  47. End
  48. If Charindex('\\',@DatabBaseNewPath)>0
  49. Begin
  50. Raiserror 50001 N'數(shù)據(jù)庫還原路徑中不能含有''\\''!'
  51. Return 1
  52. End
  53. If Right(Rtrim(@DatabBaseNewPath),1)='\'
  54. Begin
  55. Raiserror 50001 N'數(shù)據(jù)庫還原路徑的最后一位能含有''\''!'
  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'無效的數(shù)據(jù)庫還原路徑!'
  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,'')>'' --使用新的數(shù)據(jù)庫名,要是沒有指定就使用原來的數(shù)據(jù)庫名
  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 '還原數(shù)據(jù)庫: '+@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


更多請聯(lián)系:億恩科技
QQ:1613285598   0371-63322220


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

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

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

    0371-60135900
    7*24小時客服服務(wù)熱線

     
     
    亚洲另类无码专区首页| 极品粉嫩小泬白浆20P| 亚洲欧美日韩二三区在线| 人妻少妇乱子伦精品无码专区毛片 | 亚洲最大综合久久网成人| 色欲av伊人久久大香线蕉影院 | 麻豆XXXXXX在线观看| 国产成人AV一区二区三区不卡| 余年周婉小说全文免费阅读完整版| 特黄做受又硬又粗又大视频18| 猛猛操逼xxxxx| 国产偷V国产偷V亚洲高清| JIZZYOU中国少妇高潮| 亚洲精品亚洲人成在线观看麻豆 | 狠狠躁夜夜躁人人爽碰AV| 爸的比老公大两倍儿媳叫什么呢 | 久草玖玖玖爱在线资源| 粗大的内捧猛烈进出视频嘿嘿视频 | 办公室被绑奶头调教羞辱OL| 亚洲乱码一区二三四区AVA| 日韩人妻AV在线| 久久夜色精品国产嚕嚕亚洲AV| 国产精品久久无码不卡黑寡妇| 97一期涩涩97片久久久久久久 | 亚洲午夜福利AV一区二区无码| 少妇高潮抽搐无码久久AV| 老司机午夜精品视频资源| 国产乱子伦一区二区三区| CHINESE熟妇与小伙子MA| 亚洲精品无码AⅤ片桃花岛| 色偷偷WWW8888| 免费无码一区二区三区| 国内老熟妇对白HDXXXX | 人妻少妇伦在线无码| 久久成人亚洲香蕉草草| 国产成人亚洲综合精品| 9L国产精品久久久久尤物| 亚洲精品无码久久久久AV老牛 | 久久超碰97人人做人人爱| 国产精品 精品国内自产拍| A男人的天堂久久A毛片| 亚洲欧洲第一的日产SUV| 婷婷五月综合色中文字幕| 欧美巨大黑人精品一二三| 九月九电影免费观看| 国产精品成人无码久久久| ASS十三小美女ASSPICS| 亚洲色婷婷一区二区三区| 玩弄chinese丰满人妻| 青草国产超碰人人添人人碱| 久久久久亚洲精品成人网| 国产熟女一区视频在线播放| 成年午夜无码AV片在线观看| 中文字幕无码人妻少妇免费| 亚洲AV无码精品蜜桃| 少妇无力反抗慢慢张开双腿| 欧美成人性生免费看的| 久久精品99国产精品蜜桃| 国产妇女馒头高清泬20P多| JESSICAJAMES护士性| 伊人精品无码AV一区二区三区| 午夜内射高潮视频| 日本三线和韩国三线的市场定位| 旅人蕉天堂鸟的区别视频| 狠狠色丁香久久婷婷综| 国产成人AV大片大片在线播放| JAPANESE军人强迫| 又大又粗欧美成人网站| 亚洲成A人片在线观看无码专区| 天堂А√资源中文在线地址BT| 欧洲多毛裸体XXXXX| 老男人把舌头伸进我下面| 黄网站色视频免费观看| 国产成人无码AⅤ片在线观看导航| 八戒八戒视频在线WWW观看 | 99久久99久久免费精品蜜桃| 亚洲一区波多野结衣在线APP| 性VIDEOS欧美熟妇HDX| 色综合久久久无码中文字幕波多| 欧美极度另类XXⅩOO| 老师上课跳D突然被开到最大视频 老师上课没戴奶罩看到奶头 | 亚洲人成网站观看在线播放| 无线乱码A区B区C区D| 色偷偷WWW8888| 人妻少妇88久久中文字幕| 麻豆一区二区三区蜜桃免费| 精品无码久久久久国产| 国产网红在线_电影频道| 福利 无码 三级 视频| WWW国产精品内射熟女| 中文字幕一精品亚洲无线一区| 亚洲日韩一页精品发布| 亚洲AV无码成H人动漫在线观看| 玩弄人妻少妇500系列视频| 日韩A级成人免费无码视频| 欧美午夜成人精品| 免费乱理伦片在线观看八戒 | 锕锕锕锕锕锕好痛WWW在线观看 | 天美传媒自制剧免费观看 | 无码国产精品一区二区免费I6| 日韩在线观看视频一区二区| 青草久久久国产线免观蜜芽| 男人J桶进女人P无遮挡| 久久人与动人物A级毛片| 精品少妇无码AV在线播放| 国内精品久久久久精品电影| 国产精品久久久久这里只有精品| 从厨房到餐桌JOYCE| 办公室狂肉校花H陈舒| CHINA真实VIDEOS另类| 18禁美女黄网站色大片免费观看| 野花高清在线观看免费官网| 亚洲精品无码专区在线| 亚洲AV无码精品色午夜在线观看 | 久久婷婷综合色丁香五月| 精品无码久久久久久久动漫| 国产在线看片无码不卡| 国产精品亚洲片在线| 国产成人无码区免费AⅤ片| 都市 亚洲 自拍 小说 校园| 波多波多野结衣中文无| JEΑL0USVUE成熟50M| 99久久国产宗和精品1上映| 最新系列国产专区|亚洲国产| 制服丝袜中文字幕在线| 在线A级毛片无码免费真人| 一本大道久久A久久综合| 亚洲色一色鲁一鲁鲁| 亚洲精品无码久久久久SM| 亚洲成AV人片高潮喷水| 亚洲AV成人一区国产精品小说| 西西顶级艺术人像摄影| 无码人妻出轨与黑人中文字幕| 特级毛片在线大全免费播放| 手机在线永久免费观看AV片| 色一情一乱一乱一区91Av| 日韩人妻系列无码专区| 日本亚洲色大成网站WWW| 人妻无码一区二区三区四区| 人妻无码AⅤ中文字幕日韩| 秋霞电影高清完整版| 欧美一区二区三区激情| 欧美日韩一区精品视频一区二| 欧美精品视频一区二区| 欧美精品一区二区三区在线| 欧美人与动牲交A欧美精品| 欧美性婬爽www视频播放| 欧美日日日日BBBBB视频| 欧美老妇疯狂XXXXBBBB| 欧美性XXXXX极品娇小| 欧洲少妇色XXXXX欧美美妇| 欧美一区二期三区视频| 秋霞午夜成人久久电影网| 人妻另类 专区 欧美 制服| 人妻丝袜中文无码AV影音先锋专| 人妻丰满熟妇av无码区HD| 人人澡人人澡人人澡| 日本无人区码卡3卡4卡区别| 日韓丨亞洲丨制服丨亂倫| 色又黄又爽18禁免费网站现观看| 少妇愉情理伦片高潮日本| 天天躁夜夜躁狠狠是什么心态| 无码被窝影院午夜看片爽爽JK| 无码内射成人免费喷射| 五月丁香伊人久久91视频| 亚洲ⅤA中文字幕无码毛片| 亚洲AV区无码字幕中文色| 亚洲AV综合色区无码专区蜜桃 | 成人精品动漫一区二区| 岛国精品一区免费视频在线观看| 丰满少妇熟女高潮流白浆| 国产成人久久综合第一区| 国产精品久久久久久久久鸭| 国产色视频一区二区三区| 国内偷拍亚洲欧洲2018| 精品国精品国产自在久国产应用| 久久99精品国产麻豆宅宅| 久久久久亚洲AV无码成人片麻豆| 两人做人爱视频在线观看| 妺妺窝人体色WWW在线观看婚闹| 欧美黑人粗暴多交高潮水最多| 人马畜禽CORPORATION| 日本乱熟人妻精品中文字幕| 上面一个奶下面一个顶是什么字| 婷婷五月18永久免费网站| 亚洲AⅤ熟女五十路中出| 亚洲国产成人精品激情姿源| 亚洲中文精品久久久久久| 中国CHINAGARY武警网站| 99久久久无码国产精品9| 八区精品色欲人妻综合网| 东京热无码人妻系列综合网站 | 一区适合晚上一个人看B站| 中日韩精品卡一卡二卡3卡| 99精品视频在线观看婷婷| 办公室的秘密2中文字幕| 公车揉捏顶弄伸入| 国产免费破外女真实出血视频| 黑人60厘米全进去了| 久久精品国产亚洲AV蜜臀色欲 |