加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer使用sql语句复制数据库

发布时间:2020-12-12 13:09:36 所属栏目:MsSql教程 来源:网络整理
导读:1、sql语句备份/还原数据库 1.1复制数据库结构和数据 BACKUP DATABASE Test TO DISK = 'c:test.bak' -- 备份(注: Test 是需要备份的数据库的名称;路径可以随意选择; test.bak 是备份的文件的名称) RESTORE DATABASE TestBak FROM DISK = 'c:test.bak'

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

1.1复制数据库结构和数据

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

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


拓展sql语句:

RESTOREFILELISTONLY FROMDISK = 'c:test.bak' --得到逻辑文件信息


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

1.2只复制数据库结构

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

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

删除数据库中的数据:

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

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

一张表一张表删除数据:

truncateTABLE 表名

2、循环复制表

usetest

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


CREATEDATABASE test1(目标数据库)??--创建一个新的数据库


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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读