广告
返回顶部
首页 > 资讯 > 数据库 >MS SQLServer如何批量附加数据库
  • 887
分享到

MS SQLServer如何批量附加数据库

2024-04-02 19:04:59 887人浏览 独家记忆
摘要

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

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

  
  USE MASTER  
Go  
  IF OBJECT_ID('[sp_AttchDataBase]') IS NOT NULL  
    DROP PROCEDURE [sp_AttchDataBase]  GO  
    CREATE PROCEDURE sp_AttchDataBase(  
    @Path       NVARCHAR(1024),  
    @DataFiles  NVARCHAR(MAX) = NULL,  
    @SplitStr   NVARCHAR(50) = ','  )  
AS  
    SET NOCOUNT ON  
      
      
      
      
    --检查文件路径是否正确  
    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)

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

您可能感兴趣的文档:

--结束END--

本文标题: MS SQLServer如何批量附加数据库

本文链接: https://www.lsjlt.com/news/54870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MS SQLServer如何批量附加数据库
    这篇文章主要介绍了MS SQLServer如何批量附加数据库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   &nbs...
    99+
    2022-10-18
  • sqlserver附加数据库出错如何解决
    在SQL Server中附加数据库时出现错误时,可以尝试以下解决方法:1. 确保数据库文件的完整性:检查数据库文件是否完整,没有被损...
    99+
    2023-09-22
    sqlserver 数据库
  • 执行脚本附加sqlserver数据库.mdf 、.ldf
    原文:https://www.cnblogs.com/wwzz/p/14505557.html...
    99+
    2016-01-28
    执行脚本附加sqlserver数据库.mdf .ldf 数据库入门 数据库基础教程
  • sql数据库如何附加
    这篇文章主要介绍sql数据库如何附加,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql数据库附加步骤:打开sql里的企业管理器中的数据库,选中数据库右键打开附加数据库,然后选中数据...
    99+
    2022-10-18
  • SQLServer数据库怎么批量获取所有表和数据
    本篇内容主要讲解“SQLServer数据库怎么批量获取所有表和数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQLServer数据库怎么批量获取所有表和数据...
    99+
    2022-10-18
  • 误删SQLServer日志文件后怎么附加数据库
    这篇文章主要讲解了“误删SQLServer日志文件后怎么附加数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“误删SQLServer日志文件后怎么附加数据...
    99+
    2022-10-18
  • java如何批量添加数据
    在Java中,可以使用循环结构来批量添加数据。首先,你需要创建一个数据容器,比如数组或集合,用于存储批量添加的数据。然后,使用循环结...
    99+
    2023-08-29
    java
  • SQLServer数据库怎么远程查询并批量导入数据
    本篇内容主要讲解“SQLServer数据库怎么远程查询并批量导入数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQLServer数据库怎么远程查询并批量导入...
    99+
    2022-10-18
  • 如何使用BULK INSERT大批量导入数据SQLSERVER
    这篇文章给大家分享的是有关如何使用BULK INSERT大批量导入数据SQLSERVER的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:  CREAT...
    99+
    2022-10-19
  • 数据库中如何批量删除数据
    这篇文章将为大家详细讲解有关数据库中如何批量删除数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在一个Oracle数据库运行过程中,有时候会遇到要批量删除数据的情况...
    99+
    2022-10-18
  • sql语句如何批量添加数据
    这篇文章将为大家详细讲解有关sql语句如何批量添加数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。sql语句批量添加数据的方法是什么?方法1:逐条执行,速度慢。INSE...
    99+
    2022-10-18
  • 怎么解决SQLServer附加数据库是只读模式的问题
    本篇内容主要讲解“怎么解决SQLServer附加数据库是只读模式的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决SQLServer附加数据库是只读模...
    99+
    2022-10-18
  • sqlserver 批量修改数据库表主键名称为PK_表名
    我们在创建sqlserver得数据表的主键的时候,有时会出现,后面加一串随机字符串的情况,如图所示:    2.如果你有强迫症的话,可以使用以下sql脚本进行修改,将主键的名称修改为PK_表名. --将表的主键名统一规范为PK...
    99+
    2017-07-05
    sqlserver 批量修改数据库表主键名称为PK_表名
  • SQLServer数据库中怎么对文件进行批量重命名
    SQLServer数据库中怎么对文件进行批量重命名,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  SQLServer数据库如何对文件进行...
    99+
    2022-10-18
  • 数据库批量迁移如何弄
    数据库批量迁移通常有以下几种方法:1. 数据库备份和恢复:首先,在源数据库中进行备份操作,生成一个数据库备份文件。然后,在目标数据库...
    99+
    2023-09-20
    数据库
  • mysql数据库如何批量替换
    这篇“mysql数据库如何批量替换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql...
    99+
    2023-04-22
    mysql
  • 如何将批量数据导入mysql数据库
    这篇文章将为大家详细讲解有关如何将批量数据导入mysql数据库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如何将批量数据导入mysql数据库1.创建一个e...
    99+
    2022-10-18
  • .NET多种数据库大数据批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)
    目录功能介绍(需要版本5.0.45)功能用法数据库支持性能测试使用疑问老版本源码下载:功能介绍 (需要版本5.0.45) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的S...
    99+
    2022-11-12
  • python如何实现Mysql数据库批量新增数据
    本篇内容主要讲解“python如何实现Mysql数据库批量新增数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python如何实现Mysql数据库批量新增数据”吧!一、批量插入数据的场景在进行...
    99+
    2023-06-29
  • 如何用Python将数据批量的插入到数据库
    这篇文章给大家介绍如何用Python将数据批量的插入到数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我是一名挣扎在编程链底端的pythoner,工作中既要和数据打交道,也要保持和erp系统,web网站友好的&qu...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作