SQLServer使用sql语句复制数据库

1、sql语句备份/还原数据库

1.1复制数据库结构和数据

BACKUP DATABASE Test TO DISK = 'c:\test.bak'--备份(注:Test是需要备份的数据库的名称;路径可以随意选择;test.bak是备份的文件的名称)

RESTORE DATABASE TestBak FROM DISK ='c:\test.bak' WITH MOVE 'test' TO 'c:\testbak.mdf',MOVE 'test_log' TO 'c:\testbak.ldf'--还原(注:TestBak是还原的数据库的名称)


拓展sql语句:

RESTORE FILELISTONLY FROM DISK = 'c:\test.bak' --得到逻辑文件信息


此操作不仅复制了数据库结构,而且还复制了数据。

1.2只复制数据库结构

   此方法利用了一个折中的方法。先利用1.1的操作步骤,备份和还原数据库的结构和数据。然后,再删除数据库中的数据,这样就相当于只复制数据库结构了。不过这种方法有点绕弯。

(另,本人现在还没有找到sqlserver只复制数据库结构的简单方法!)

删除数据库中的数据:

一键清空数据库中的所有数据:

exec test.dbo.sp_msforeachtable  @Command1 ='truncate table ?'

一张表一张表删除数据:

truncate TABLE 表名

2、循环复制表

use test

select name from sysobjects where OBJECTPROPERTY(id,N'IsUserTable')=--取得某数据库中的用户表名


CREATE DATABASE test1(目标数据库)  --创建一个新的数据库


--此处做一个循环,循环所有的用户表名

SELECT * INTO test1.dbo.Users(目标表名)FROM test.dbo.users(原表名)  --复制表操作,此操作复制了表结构和数据

SELECT * INTO test1.dbo.Products(目标表名)FROM test.dbo.Products(原表名)WHERE 1=--复制表操作,此操作仅仅复制表结构

   此方法适合数据库中表数量较少的时候,若表数量太大,就比较浪费资源了。

另,复制表操作只能复制表的字段,不能复制主键、索引等。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值