SqlServer一键复制数据库脚本
2014-07-16 16:16
639 查看
原帖地址:/article/1404445.html
假定有两个Server:192.168.0.1和192.168.0.2,需要复制的数据库名为TestDB,现将该库由192.168.0.1复制到192.168.0.2,其中%source_database_backup_file_dir%为存放192.168.0.1上TestDB库备份文件的文件夹,%target_database_file_dir%为192.168.0.2上TestDB数据库文件所在的文件夹,BAT脚本如下:
本脚本主要使用BACKUP命令为原库生成一个备份文件,然后使用RESTORE命令将备份文件恢复到目标库,从而实现数据库复制。关于BACKUP命令请参考:http://msdn.microsoft.com/zh-cn/library/ms186865.aspx,关于RESTORE命令请参考:http://msdn.microsoft.com/zh-cn/library/ms186858.aspx
有两个细节说明一下:
1. BACKUP语句中的WITH INIT用于每次备份时覆盖原备份文件中的数据。
2. 由于两个Server都需要访问数据库备份文件 ,存放备份文件的文件夹一般要设置为"共享"文件夹。
假定有两个Server:192.168.0.1和192.168.0.2,需要复制的数据库名为TestDB,现将该库由192.168.0.1复制到192.168.0.2,其中%source_database_backup_file_dir%为存放192.168.0.1上TestDB库备份文件的文件夹,%target_database_file_dir%为192.168.0.2上TestDB数据库文件所在的文件夹,BAT脚本如下:
@echo off set source_server=192.168.0.1 set source_server_user=sa set source_server_password=sa set target_server=192.168.0.2 set target_server_user=sa set target_server_password=sa set database=TestDB set source_database_backup_file_dir=\\Systemname\ShareName\Path set target_database_file_dir=\\Systemname\ShareName\Path echo Start to backup source database... osql -S"%source_server%" -U"%source_server_user%" -P"%source_server_password%" -n -h-1 -d"%database%" -Q"BACKUP DATABASE %database% TO DISK = '%source_database_backup_file_dir%\%database%.bak' WITH INIT;" echo Disconnect all existing connections of target database. osql -S"%target_server%" -U"%target_server_user%" -P"%target_server_password%" -Q"declare @i int declare cur cursor for select spid from sysprocesses where db_name(dbid)= '%database%' 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" echo Start to resotre target database from source database backup file... osql -S"%target_server%" -U"%target_server_user%" -P"%target_server_password%" -n -h-1 -d"Master" -Q"RESTORE DATABASE %database% FROM DISK = '%source_database_backup_file_dir%\%database%.bak' WITH REPLACE,MOVE '%database%' TO '%source_database_backup_file_dir%\%database%.mdf',MOVE '%database%_Log' TO '%source_database_backup_file_dir%\%database%_log.ldf';" echo DONE!! pause
本脚本主要使用BACKUP命令为原库生成一个备份文件,然后使用RESTORE命令将备份文件恢复到目标库,从而实现数据库复制。关于BACKUP命令请参考:http://msdn.microsoft.com/zh-cn/library/ms186865.aspx,关于RESTORE命令请参考:http://msdn.microsoft.com/zh-cn/library/ms186858.aspx
有两个细节说明一下:
1. BACKUP语句中的WITH INIT用于每次备份时覆盖原备份文件中的数据。
2. 由于两个Server都需要访问数据库备份文件 ,存放备份文件的文件夹一般要设置为"共享"文件夹。
相关文章推荐
- SqlServer一键复制数据库脚本
- 备份文件命令SqlServer一键复制数据库脚本
- sqlserver 从数据库导出建库脚本
- 用SQL脚本实现数据库合并复制
- SQLServer获得所有用户存储过程、根据存储过程名称获得内容、获得数据库对象创建脚本
- (喷血分享)利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句
- 查看数据库(SqlServer)结构的SQL脚本
- 运用 SQLSERVER 自带工具 把数据库中的表复制到另外一个数据库中
- SQLServer中把某个表里的记录复制到另一个数据库的表中
- 脚本:数据库创建、备份、强制还原、表数据复制
- 数据库更新Sqlserver脚本总结
- [分享] 数据库服务管理脚本,超好用! 支持oracle,mysql,sqlserver,tomcat(本人在源程序上修改的)
- SQLServer从一台数据库服务器将数据库(连同数据)复制到另一台数据库服务器的操作方法
- SQLSERVER复制订阅中的数据库版本选择
- sqlserver 复制表 复制数据库存储过程的方法
- 邹建:用SQL脚本实现数据库合并复制
- SQLServer 数据库备份还原脚本
- SQLServer中把某个表里的记录复制到另一个数据库的表中
- shell脚本检测数据库AB复制
- 【SQLServer】“无法对数据库'XXX' 执行删除,因为它正用于复制”的解决方法