最近遇到需要将SQLServer数据库中的数据迁移到另外一台服务器上的业务场景。经过各方查阅资料,发现大部分导入导出功能都是在第三方数据库连接工具上实现的,不能满足我的需求。于是在下经过各种尝试终于实现了使用java代码实现导入导出的功能,希望能够遇到这种需求的开发人员一点帮助。talk is cheap,show you the code!

 导入功能:

直接使用jdbctemplate执行以下语句

set nocount on exec sp_attach_db @dbname = '数据库名称', @filename1 = 'mdf路径',@filename2 = 'ldf路径'

使用set nocount on的原因是由于执行语句时消除消息栏信息对执行结果的影响。

 导出功能:

由于SQLServer数据库是直接对mdf与ldf文件进行读取操作的,所以在直接导出这两个文件时会说文件正在使用,无法对其进行操作。所以我们要先将连接数据库的进程杀死在进行操作。杀死进程有两种方式:

  第一种:

declare
@i int declare cur cursor for
select spid from sysprocesses where db_name(dbid)= '要断开连接的数据库名称'
open cur
fetch next from cur into @i
while @@fetch_status=0
begin
exec('kill '+@i)
fetch next from cur into @i
end
close cur
deallocate cur 

经过尝试这种方式还是无法解除mdf与ldf文件的限制。但是使用了这段代码后可以直接删除数据库,如果有覆盖数据的需求,可以先执行这段代码,然后可以实现数据覆盖的功能。

第二种:

Process pro = Runtime.getRuntime().exec("net stop mssqlserver")

简单粗暴,直接使用Process类将SQLServer的进程杀死。但是在杀死的过程中需要管理员身份才能成功,所有使用了nircmd的工具,这里可以直接下载

nircmd下载

使用后命令为

Process pro = Runtime.getRuntime().exec("nir.exe的路径 elevate  net stop mssqlserver")

这样运行的时候会弹出一个选择框询问是否同意更改,十分影响操作,可以在windows中将它关闭掉。

经过上面一顿操作,就可以正常的将文件复制,下载出来了。

最后一定要记得要SQLServer服务启动!

Java实现SQLServer数据库mdf与ldf文件导入导出相关推荐

  1. JAVA上传文件到SQLserver_Java实现SQLServer数据库mdf与ldf文件导入导出

    最近遇到需要将SQLServer数据库中的数据迁移到另外一台服务器上的业务场景.经过各方查阅资料,发现大部分导入导出功能都是在第三方数据库连接工具上实现的,不能满足我的需求.于是在下经过各种尝试终于实 ...

  2. 数据库mdf和ldf文件_如何将SQL数据库文件(MDF和LDF)移动到另一个位置

    数据库mdf和ldf文件 How often you got to the point that for any reason you don't have enough space on the s ...

  3. SqlServer如何将mdf、ldf文件导入数据库—两种解决方法

    在导入之前将mdf和ldf文件的权限修改成everyone完全控制,避免导入失败:无everyone用户添加一个即可. 操作步骤: 选择对应文件右键-属性-安全-编辑-选中everyone-完全控制打 ...

  4. ldf文件怎么储存到mysql中_如何转移数据库MDF和LDF文件

    我们可以很轻易地使用SQL Server来创建一个数据库,创建的数据库实例将存储在指定的默认位置(不一定是C盘,可以手动变更默认存储位置).假设此时数据库实例创建在了C盘中的默认位置,亦即是与数据库安 ...

  5. sql server 数据库mdf与ldf文件的导入两种方法

    方法一: 在sql server 的某个数据库上新建查询, @dbname = 'databasename', @filename1 =  'mdf文件路径(包缀名)', @filename2 = ' ...

  6. mdf,ldf文件导入数据库小萌新

    1.可以直接新建查询然后输入以下代码直接执行就好 // A code block var foo = 'bar'; EXEC sp_attach_db @dbname = '你的数据库名', @fil ...

  7. mysql有mdf文件和ldf文件吗_如何得到.MDF和.LDF文件

    展开全部 方法和详bai细的操作步骤如下:du 1.第一步zhi,在桌面上,单击" Management Studio"图标,dao见下图版,转到下面的步骤权. 2.第二步,执行完 ...

  8. 服务器mdf ldf文件,sqlserver2008如何导入mdf,ldf文件

    网上找了很多解决sql server导入其他电脑拷过来的mdf文件,多数是不全,遇到的解决方法不一样等问题,下边是找到的解决问题的最全面方法! 将mdf, ldf文件导入到sql server 200 ...

  9. sqlServer创建数据库并指定mdf,ldf文件所在路径

    sqlServer创建数据库并指定mdf,ldf文件所在路径 CREATE DATABASE [dataBaseName]CONTAINMENT = NONEON PRIMARY ( NAME = N ...

最新文章

  1. Response.Redirect 打开新窗体的两种方法
  2. Spring Cloud(二) 配置Eureka Client
  3. 亚马逊标题自动抓取_15分钟内开始使用Amazon Web Services和全自动资源调配
  4. html密码字段语法,HTML input 标签的 type 属性
  5. 动环监控调试线_电力综合监控系统解决方案-【斯必得智慧物联】
  6. python训练mask rcnn模型C++调用训练好的模型--基于opencv4.0(干货满满)
  7. 人工智能机器学习笔记 10月15日
  8. Atitit 项目管理之沟通管理概论问题管理 艾提拉著 跨语言沟通 群组沟通 书面沟通 目录 1. 沟通方式 2 1.1. 书面沟通 vs 当面沟通 2 1.2. 群组沟通(公开沟通) vs
  9. sitemesh框架的简单使用(springboot+maven+jsp+sitemesh)
  10. Kafka配置broker映射错误报错Discovered coordinator xxx rack: null
  11. java学习笔记 01
  12. php搭建简单表格的制作方法,最简单的表格制作方法技巧
  13. 创意编程/小学组(4-6年级)-图形化创意
  14. 抖音关闭单身开启恋爱模式设置教程分享
  15. DLL 注入的三种方法详解
  16. 项目进度推进——工作成果呈现
  17. 航模遥控继电器单通道控制2路继电器开关实现原理解析
  18. 第二十二届中国文旅全球论坛新闻发布会在穗召开
  19. 代码随想录二刷链表篇
  20. ios QQ 登录提示下载安装最新版本qq

热门文章

  1. 为什么要使用接口和抽象类?
  2. java中的控制层(controller)数据访问层(dao)业务逻辑层的(service)
  3. 双系统gpt卸载linux,UEFI双系统下手动删除Ubuntu引导
  4. AWARD BIOS设置手册
  5. 探寻智能网联趋势下“中国模式”创新崛起之路
  6. “秘密”社交挖握人性罪恶过多必死
  7. 加密的m3u8视频下载支持本地m3u8
  8. python字典中的items和iteritems
  9. python kNN classCount.iteritems()
  10. Spring事务传播行为