SQLServer使用sql语句复制数据库
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? --复制表操作,此操作仅仅复制表结构 ?? 此方法适合数据库中表数量较少的时候,若表数量太大,就比较浪费资源了。 另,复制表操作只能复制表的字段,不能复制主键、索引等。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |