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
此操作不僅複製了資料庫結構,而且還複製了資料。
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')= 1 --取得某資料庫中的使用者表名
CREATE DATABASE test1(目標資料庫)--建立一個新的資料庫
--此處做一個迴圈,迴圈所有的使用者表名
SELECT * INTO test1.dbo.Users(目標表名)FROM test.dbo.users(原表名)--複製表操作,此操作複製了表結構和資料
SELECT
* INTO
test1.dbo.Products(目標表名)FROM
test.
此方法適合資料庫中表數量較少的時候,若表數量太大,就比較浪費資源了。
另,複製表操作只能複製表的欄位,不能複製主鍵、索引等。