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

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

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

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

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

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

存儲過程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小時客服服務熱線

     
     
    亚洲AV成人深夜一区午夜网站 | 免费 成 人 黄 色 网站69| 粗大的内捧猛烈进出无码 | 久久天天躁夜夜躁狠狠躁| 波多野结衣av电影在线观看| 亚洲精品狼友在线播放| 人妻少妇伦在线无码专区视频| 狠狠躁夜夜躁人人爽天天古典| 拔萝卜打牌不盖被子| 亚洲欧美成人在线观看| 肉感饱满中年熟妇日本| 久久久老熟女一区二区三区| 国产成人精品无码免费看| 制服 丝袜 亚洲 中文 综合| 午夜免费无码福利视频| 欧洲美女粗暴交视频| 精品欧美黑人一区二区三区| 成人精品视频一区二区三区不卡 | 亚洲国产精品一区第二页| 人妻含泪让粗大挺进| 精品久久久久久无码人妻热| 成人A级毛片免费播放| 野花日本HD免费高清版7| 天堂8在线新版官网| 男女性高爱潮是免费国产| 国产艳妇AV在线出轨| 宝贝张开腿嗯啊高潮了视频| 亞洲成AV無碼人在線觀看| 天天想你免费看西瓜视频| 免费毛片45分钟| 国内精品免费视频自在线拍| 产后漂亮奶水人妻| 夜夜躁狠狠躁日日躁视频| 我和公GONG在厨房日本电影| 女人为啥摸几下就让进了| 黑人大荫道BBWBBB高潮潮喷| 厨房掀开馊了裙子挺进电影 | 亚洲 春色 另类 小说| 秋霞国产午夜伦午夜无码灬| 久久精品人人槡人妻人人玩AV| 国产白嫩护士被弄高潮| 777久久精品一区二区三区无码| 亚洲AV综合色区| 日韩亚洲AV人人夜夜澡人人爽| 老头猛挺进小雯的体内视频| 国产午夜成人无码免费看不卡| 暴躁少女CSGO图片| 揄拍成人国产精品视频| 性色欲情网站IWWW九文堂| 日产精品1卡二卡三卡| 乱中年女人伦视频国产| 国内精品久久久久精品电影| 床震吃胸膜奶免费视频| 中文字幕色AV一区二区三区| 亚洲成a人片在线观看无码关注| 三上悠亚SSNL-618无码播| 美女图片禁欲系高级感| 极品少妇的粉嫩小泬看片| 国产AV无码专区亚洲AV毛网站| 97成人碰碰久久人人超级碰OO| 亚洲国产AV无码男人的天堂| 他揉捏她两乳不停呻吟人妻| 欧美乱妇高清无乱码| 久久精品国产99精品亚洲| 国产精品无码永久免费888| OLDMACDONALD老人大包| 永久黄网站免费视频性色| 亚洲AV无码成人精品区瑜伽裤| 少妇扒开毛茸茸的B自慰| 欧美性猛交XXXX免费看| 旧里番美熟妇1一2集| 国内精品伊人久久久久网站| 丰满少妇熟女高潮流白浆| 99久久人妻精品免费二区| 亚洲伊人久久综合成人网站| 亚洲ⅤA中文字幕无码毛片| 色AV综合AV综合无码网站| 欧美极品少妇XXXXⅩ高跟鞋| 久久久久久久精品国产亚洲| 国产又色又爽又刺激在线播放| 寡妇大J8又粗又大| TPU色母能与PA6色母通用吗| 在线精品一区二区三区| 亚洲精品夜夜夜妓女网| 午夜理论片YY6080影院| 色悠久久久久久久综合网| 欧美人与性动交a欧美精品| 老妇擦她毛荫荫的玥户| 精产国品一二三产品99| 国产乱妇乱子在线播放视频| 道德沦丧一家3口小说| AV成人午夜无码一区二区| 永久免费AV无码不卡在线观看| 亚洲大肥女ASS硕大| 无码视频一区二区| 色在线 | 国产| 人妻无码熟妇乱又伦精品| 内射丰满熟妇18p一区二区| 久久久中精品2020中文| 护士奶头又白又大又好摸| 国产免费不卡午夜福利在线| 粉嫩大学生无套内射无码卡视频| ZOOM与人性ZOOM我放弃播放器| 18禁亲胸揉胸膜下刺激免费网站| 亚洲无日韩码精品| 亚洲ΑV无码一区二区三区四区| 无码中文人妻在线一区二区三区| 少妇高潮惨叫喷水正在播放| 人人妻人人澡人人爽人人精品电影| 男生把手放进我内裤揉摸好爽| 久久亚洲精品无码AV| 精品人妻一区二区三区曰产乱码 | 视频一区麻豆国产传媒| 人人妻人人澡人人爽人人精品图片| 欧美XXXX黑人又粗又大| 麻豆日产精品卡2卡3卡4卡5卡| 久久狠狠色噜噜狠狠狠狠97| 国内精品久久久久久久97牛牛| 国产精品乱码高清在线观看| 父母儿女一家换着玩的文案| 成人伊人亚洲人综合网| 被公牛日到了高潮| M豆传媒有限公司观看| AV天堂永久资源网| 1313午夜精品理论片| 伊人激情AV一区二区三区| 亚洲无人区一码二码三码区别 | 国产一在线精品一区在线观看| 国产福利萌白酱精品TV一区| 东京热无码人妻系列综合网站| 波多野结衣无码中文字幕18禁| wwwxxx一区二区| 99在线精品视频在线观看| 18禁纯肉高黄无码动漫| 中文字幕日韩人妻不卡一区| 中国WINDOWS野外| 治愈系恋人 电视剧| 曰曰摸天天添天天湿| 一二三四免费BD高清视频| 亚洲中文字幕无码中文| 亚洲色欲AV无码成人专区| 亚洲精品沙发午睡系列| 亚洲国产人成自久久国产| 亚洲成色WWW成人网站| 亚洲AV中文无码字幕色三| 亚洲AV无码国产在丝袜线观看| 性一交一乱一乱一视频| 性XXXXXXXXX18欧美人| 午夜免费无码福利视频网址| 午夜伦情电午夜伦情电影| 香蕉久久久久久久AV网站| 午夜亚洲AV日韩AV无码大全| 无人区码一码二码三码是 | 国产风流老太婆大BBBHD视频| 国产成人A亚洲精V品无码| 国产成人AAAAA级毛片| 国产成人精品久久| 国产成人一区二区三区免费| 国产成人精品一区二区秒播| 国产激情一区二区三区成人| 国产精品无码A∨果冻传媒| 国产裸体歌舞一区二区| 国产清纯白嫩初高生在线观看| 国产三级在线观看完整版| 国产日产精品_国产精品毛片| 国产卡一卡二无线乱码| 国产麻豆剧传媒精品国产AV| 国产午夜激无码AV片在线观看| 国产又爽又粗又猛的视频| 狠狠人妻熟妇av又粗又大| 精品高潮呻吟99AV无码视频| 精品无人区一线二线三线区别| 久久久国产精品ⅤA麻豆LL| 久久亚洲AV无码精品色午夜麻| 老公带朋友来家里C我怎么办| 免费能直接看黄的视频| 欧美XXXX狂喷| 人妻 中文 无码 JAVHD| 日产乱码一二三区别免费影视| 少妇极品熟妇人妻200片| 婷婷综合久久中文字幕| 五月丁香色综合久久4438| 亚洲AⅤ熟女五十路中出| 亚洲大成色WWW永久泡芙| 亚洲欧洲国产码专区在线观看| 亚洲综合无码一区二区三区不卡| 曰韩免费无码AV一区二区| _97夜夜澡人人爽人人喊_欧美| 99精品久久99久久久久| XXXX内射中国老妇| 波多野美乳人妻HD电影欧美| 粉嫩AV无码一区二区三区| 国产成人亚洲精品另类动态图 | 精品无人码麻豆乱码1区2区| 久久SE精品一区精品二区国产| 久久久久亚洲AV成人无码| 美国ZOOM人与ZOOM| 欧美高清熟妇啪啪内射不卡自拍| 人人做天天爱夜夜爽2020| 色综合天天综合网国产|