在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MS SQLServer如何批量附加数据库

131次阅读
没有评论

共计 3801 个字符,预计需要花费 10 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要介绍了 MS SQLServer 如何批量附加数据库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

/************************************************************ 
 *  标题:MS SQLServer  批量附加数据库  
 *  说明:请根据下面的注释使用此脚本  
 *  时间: 2015/7/13 11:16:41 
 ************************************************************/ 
 USE MASTER 
GO 
 IF OBJECT_ID([sp_AttchDataBase] ) IS NOT NULL 
 DROP PROCEDURE [sp_AttchDataBase] GO 
 /* 附加数据库(V2.0) Andy 2011-7-8 */ CREATE PROCEDURE sp_AttchDataBase( 
 @Path NVARCHAR(1024), 
 @DataFiles NVARCHAR(MAX) = NULL, 
 @SplitStr NVARCHAR(50) =  ,  ) 
AS 
 SET NOCOUNT ON 
 
 /* 
 V2.0  版本,在 V1.0 基础上,处理文件路径不规范原則,e.g. @DataFiles= E:\ my data DB \ Hello RT  
 
 @Path  文件路径  
 @DataFiles  文件名列表  
 @SplitStr  文件名列表中的文件分隔符  
 
 1. 必须把要附加的数据库文件 (*.mdf 和 *.ldf) 放到 @Path 下, 
 2. 当 @DataFiles Is Null  会附加 @Path 文件夹下的所有数据库文件. 
 
 e.g: 
 Exec sp_AttchDataBase  D:\db2  
 */ 
 
 
 -- 检查文件路径是否正确  
 DECLARE @Dir NVARCHAR(1024), 
 @i INT, 
 @x XML 
 
 IF RIGHT(@Path, 1)    \  
 SET @Path = @Path +  \  
 
 IF CHARINDEX(\\ , @Path)   0 
 BEGIN 
 --RAISERROR 50001 N 文件路径中不能包含有 \\ ,@Path 设置错误.  
 RETURN(1) 
 END 
 
 SET @Dir =  Dir   + @Path 
 EXEC @i = xp_cmdshell @Dir, 
 no_output 
 
 IF @i   0 
 BEGIN 
 --RAISERROR 50001 N 无效的文件路径,@Path 设置错误.  
 RETURN(1) 
 END 
 
 SET @Path = REPLACE(@Path,  , ) /* 处理文件路径不规范原則 */ 
 
 DECLARE @Files TABLE(NAME NVARCHAR(512)) 
 DECLARE @filetmpfin TABLE( 
 NAME NVARCHAR(255) NOT NULL, 
 depth INT NULL, 
 IsFile BIT NULL 
 ) 
 
 DECLARE @SmoPrimayChildren TABLE( 
 STATUS INT, 
 fileid INT, 
 NAME SYSNAME, 
 FILENAME NVARCHAR(512) 
 ) 
 
 DECLARE @smoPrimaryFileProp TABLE(PROPERTY SQL_VARIANT NULL, VALUE SQL_VARIANT NULL) 
 
 SET @DataFiles = REPLACE( 
 REPLACE(REPLACE(@DataFiles, CHAR(13) + CHAR(10),  ), CHAR(13),  ), 
 CHAR(10), 
   
 ) 
 
 SET @x = N Root File  + REPLACE(@DataFiles, @SplitStr, N /File File) + 
 N /File /Root  
 
 
 INSERT INTO @Files 
 SELECT t.v.value(.[1] ,  nvarchar(512) ) AS NAME 
 FROM @x.nodes(Root/File) t(v) 
 WHERE t.v.value(.[1] ,  nvarchar(512) )     
 
 
 INSERT INTO @filetmpfin 
 EXEC MASTER.dbo.xp_dirtree @Path, 
 1, 
 1 
 
 DECLARE @File NVARCHAR(255), 
 @sql NVARCHAR(4000), 
 @DataBase SYSNAME 
 
 
 
 DECLARE cur_File CURSOR 
 FOR 
 SELECT NAME 
 FROM @filetmpfin AS a 
 WHERE IsFile = 1 
 AND NAME LIKE  %.mdf  
 AND ( 
 EXISTS( 
 SELECT 1 
 FROM @Files 
 WHERE NAME = a.Name 
 ) 
 OR @DataFiles IS NULL 
 ) 
 AND NOT EXISTS( 
 SELECT 1 
 FROM MASTER.sys.master_files 
 WHERE physical_name = @Path + a.Name 
 ) 
 
 OPEN cur_File 
 
 BEGIN TRY 
 FETCH NEXT FROM cur_File INTO @File 
 WHILE @@Fetch_Status = 0 
 BEGIN 
 SET @sql =  dbcc checkprimaryfile (N  + @Path + @File +   , 2) With No_Infomsgs  
 
 INSERT INTO @smoPrimaryFileProp 
 EXEC (@sql) 
 
 SET @sql =  dbcc checkprimaryfile (N  + @Path + @File +   , 3) With No_Infomsgs  
 
 INSERT INTO @SmoPrimayChildren 
 EXEC (@sql) 
 
 SELECT @DataBase = QUOTENAME(CONVERT(NVARCHAR(255), VALUE)), 
 @sql = NULL 
 FROM @smoPrimaryFileProp 
 WHERE CONVERT(NVARCHAR(255), PROPERTY) =  Database name  
 
 SELECT @sql = ISNULL( 
 @sql +  ,  + CHAR(13) + CHAR(10), 
  Create DataBase   + @DataBase +   On  + CHAR(13) + CHAR(10) 
 ) + 
  (FileName=N  + @Path + RIGHT( 
 RTRIM(FILENAME), 
 CHARINDEX(\ , REVERSE(RTRIM(FILENAME))) -1 
 ) +  )  
 FROM @SmoPrimayChildren 
 
 EXEC (@sql +   For Attach) 
 
 PRINT N 成功附加数据库:   + @DataBase 
 
 DELETE 
 FROM @SmoPrimayChildren 
 
 DELETE 
 FROM @smoPrimaryFileProp 
 
 FETCH NEXT FROM cur_File INTO @File 
 END 
 END TRY 
 BEGIN CATCH 
 DECLARE @Error NVARCHAR(2047) 
 SET @Error = ERROR_MESSAGE() 
 --RAISERROR 50001 @Error 
 END CATCH 
 
 
 CLOSE cur_File 
 DEALLOCATE cur_File 
GO 
 /************************************************************ 
 *  调用方式  
 ************************************************************/ --use master --Go 
 --Exec sp_AttchDataBase -- @Path =  E:\100. 其他 \ 测试 , -- nvarchar(1024) -- @DataFiles = NULL, -- nvarchar(max) -- @SplitStr = NULL -- nvarchar(50)

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“MS SQLServer 如何批量附加数据库”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计3801字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 玩弄丰满少妇xxxxx性多毛 | 国产视频最新 | 色伊人色成人婷婷六月丁香 | 奇米222| 亚洲中文字幕特级毛片 | 久久国产乱子伦精品免费强 | 久久夜色精品国产嚕嚕亚洲av | 中文字幕人成人乱码亚洲电影 | 国产二区三区毛片 | 吃奶摸下高潮60分钟免费视频 | 尤物视频在线观看免费 | www日韩精品 | 男女一边桶一边摸一边脱视频免费 | 欧美色黄 | 蜜臀久久99精品久久久久久 | 一级α一级α片免费观看网站 | 亚洲欧美成人综合 | 热综合一本伊人久久精品 | 成人久久久久久久久久久 | 国产在线精品免费aaa片 | 国产伦久视频免费观看 视频 | 吃奶揉捏奶头高潮视频在线观看 | 欧美一区二区三区免费视频 | 亚洲综合网站久久久 | 久草视频在线播放 | 日韩一区在线视频 | 奇米久草 | 中文字幕丰满乱子伦无码专区 | 欧美亚洲精品一区 | 久久久9999久久精品小说 | 亚洲ts贴图 | 夜夜春夜夜爽久久 | 久久dvd| 午夜免费看视频 | 黄色毛片免费在线观看 | 亚洲国产精品无码久久sm | 黄网站色视频 | 草色在线| 久久99视频 | 免费午夜影片在线观看影院 | 人人爽人人爽人人片av免费 |