SQLServer使用sql语句复制数据库

数据库 专栏收录该内容
9 篇文章 0 订阅

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=--复制表操作,此操作仅仅复制表结构

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

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

  • 0
    点赞
  • 3
    评论
  • 3
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 3 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

梦Dreamer

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值