Java实现SQLServer数据库mdf与ldf文件导入导出
最近遇到需要将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文件导入导出相关推荐
- JAVA上传文件到SQLserver_Java实现SQLServer数据库mdf与ldf文件导入导出
最近遇到需要将SQLServer数据库中的数据迁移到另外一台服务器上的业务场景.经过各方查阅资料,发现大部分导入导出功能都是在第三方数据库连接工具上实现的,不能满足我的需求.于是在下经过各种尝试终于实 ...
- 数据库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 ...
- SqlServer如何将mdf、ldf文件导入数据库—两种解决方法
在导入之前将mdf和ldf文件的权限修改成everyone完全控制,避免导入失败:无everyone用户添加一个即可. 操作步骤: 选择对应文件右键-属性-安全-编辑-选中everyone-完全控制打 ...
- ldf文件怎么储存到mysql中_如何转移数据库MDF和LDF文件
我们可以很轻易地使用SQL Server来创建一个数据库,创建的数据库实例将存储在指定的默认位置(不一定是C盘,可以手动变更默认存储位置).假设此时数据库实例创建在了C盘中的默认位置,亦即是与数据库安 ...
- sql server 数据库mdf与ldf文件的导入两种方法
方法一: 在sql server 的某个数据库上新建查询, @dbname = 'databasename', @filename1 = 'mdf文件路径(包缀名)', @filename2 = ' ...
- mdf,ldf文件导入数据库小萌新
1.可以直接新建查询然后输入以下代码直接执行就好 // A code block var foo = 'bar'; EXEC sp_attach_db @dbname = '你的数据库名', @fil ...
- mysql有mdf文件和ldf文件吗_如何得到.MDF和.LDF文件
展开全部 方法和详bai细的操作步骤如下:du 1.第一步zhi,在桌面上,单击" Management Studio"图标,dao见下图版,转到下面的步骤权. 2.第二步,执行完 ...
- 服务器mdf ldf文件,sqlserver2008如何导入mdf,ldf文件
网上找了很多解决sql server导入其他电脑拷过来的mdf文件,多数是不全,遇到的解决方法不一样等问题,下边是找到的解决问题的最全面方法! 将mdf, ldf文件导入到sql server 200 ...
- sqlServer创建数据库并指定mdf,ldf文件所在路径
sqlServer创建数据库并指定mdf,ldf文件所在路径 CREATE DATABASE [dataBaseName]CONTAINMENT = NONEON PRIMARY ( NAME = N ...
最新文章
- Response.Redirect 打开新窗体的两种方法
- Spring Cloud(二) 配置Eureka Client
- 亚马逊标题自动抓取_15分钟内开始使用Amazon Web Services和全自动资源调配
- html密码字段语法,HTML input 标签的 type 属性
- 动环监控调试线_电力综合监控系统解决方案-【斯必得智慧物联】
- python训练mask rcnn模型C++调用训练好的模型--基于opencv4.0(干货满满)
- 人工智能机器学习笔记 10月15日
- Atitit 项目管理之沟通管理概论问题管理 艾提拉著 跨语言沟通 群组沟通 书面沟通 目录 1. 沟通方式	2 1.1. 书面沟通 vs 当面沟通	2 1.2. 群组沟通(公开沟通) vs
- sitemesh框架的简单使用(springboot+maven+jsp+sitemesh)
- Kafka配置broker映射错误报错Discovered coordinator xxx rack: null
- java学习笔记 01
- php搭建简单表格的制作方法,最简单的表格制作方法技巧
- 创意编程/小学组(4-6年级)-图形化创意
- 抖音关闭单身开启恋爱模式设置教程分享
- DLL 注入的三种方法详解
- 项目进度推进——工作成果呈现
- 航模遥控继电器单通道控制2路继电器开关实现原理解析
- 第二十二届中国文旅全球论坛新闻发布会在穗召开
- 代码随想录二刷链表篇
- ios QQ 登录提示下载安装最新版本qq
热门文章
- 为什么要使用接口和抽象类?
- java中的控制层(controller)数据访问层(dao)业务逻辑层的(service)
- 双系统gpt卸载linux,UEFI双系统下手动删除Ubuntu引导
- AWARD BIOS设置手册
- 探寻智能网联趋势下“中国模式”创新崛起之路
- “秘密”社交挖握人性罪恶过多必死
- 加密的m3u8视频下载支持本地m3u8
- python字典中的items和iteritems
- python kNN classCount.iteritems()
- Spring事务传播行为