讓我們來看一個簡單的表複製的T-sql操作(用SELECT複製表,只複製結構和數據,不會複製比如索引,外鍵等...)
SELECT *
INTO tb_Account_Bak
FROM tb_Account;
--複製表[tb_Account]的數據結構和所有數據到[tb_Account_Bak]表中。注:[tb_Account_Bak]表如果已經存在,複製會失敗。
SELECT Id,Name
INTO tb_Account_Bak
FROM tb_Account
--複製表[tb_Account]中的Id和Name字段到新表[tb_Account_Bak]表中。
SELECT Id,Name,Code
INTO tb_Account_Bak
FROM tb_Account
WHERE [Status]=1 AND [Type]=1
--複製[tb_Account]表中的Id、Name、Code字段,這裏給出了條件,只複製滿足Status=1和Type=1的記錄。
SELECT *
INTO tb_Account_Bak
FROM tb_Account
WHERE 1=2
--只複製表結構,並不複製數據下面,我們來看看怎麼操作遠程表的複製T-SQL
--1、首先要建立遠程連接 注:TestConn爲鏈接名稱(隨意),SQLOLEDB爲鏈接方式,61.128.128.68爲遠程主機IP
EXEC sp_addlinkedserver 'TestConn','','SQLOLEDB','61.128.128.68'
--2、登陸
EXEC sp_addlinkedsrvlogin 'TestConn','false',NULL,'sa','password'
--3、複製遠程表[tb_Account]到當前數據庫
SELECT *
INTO tb_Account_Bak
FROM TestConn.Base.dbo.tb_Account
--TestConn爲鏈接名 Base爲庫名 dbo爲架構名 tb_Account爲表表爲了複製方便,有時候我們可以創建一個存儲過程來複制
CREATE PROCEDURE SP_CopyNewTable(@NewTableName varchar(50),@OldTableName varchar(50))
AS
BEGIN
DECLARE @sql varchar(max)
SET NOCOUNT ON;
--如果新表名稱已存在,先刪除
IF not exists(SELECT 1 FROM sys.objects WHERE name=@NewTableName and type='U')
--複製
SET @sql ='select * into '+ @NewTableName + ' from '+ @OldTableName;
EXEC(@sql)
END
GO
--這個存儲過程需要傳入兩個參數,NewTableName是生成表的名稱,OldTalbeName爲已有表的名稱
EXEC SP_CopyNewTable 'tb_Account_Bak','tb_Account'
--以後複製表執行CopyNewTable就可以輕鬆複製了