如何將一個(gè)數(shù)據(jù)庫(kù)中的一個(gè)表復(fù)制到另一個(gè)數(shù)據(jù)庫(kù)的表中去
***種情況:將a數(shù)據(jù)庫(kù).dbo.a表的數(shù)據(jù)追加到b數(shù)據(jù)庫(kù).dbo.b表中 (條件:此時(shí)b數(shù)據(jù)庫(kù)中已創(chuàng)建好了b表)
inert into b數(shù)據(jù)庫(kù).dbo.b表
select * from a數(shù)據(jù)庫(kù).dbo.a表 [where 條件]
此T-SQL語(yǔ)句會(huì)有異常 僅當(dāng)使用了列列表并且 IDENTITY_INSERT 為 ON 時(shí),才能為表'b數(shù)據(jù)庫(kù).dbo.b表'中的標(biāo)識(shí)列指定顯式值。
原因:b數(shù)據(jù)庫(kù).dbo.b表中某列別設(shè)置成自動(dòng)增長(zhǎng)(一般為主鍵ID)。
解決:把 * 變成 指定 [列名] ,把自動(dòng)增長(zhǎng)的那一列去掉。
第二種情況:將a數(shù)據(jù)庫(kù).dbo.a表的數(shù)據(jù)復(fù)制到b數(shù)據(jù)庫(kù).dbo.b表中 (條件:此時(shí)b數(shù)據(jù)庫(kù)中沒(méi)有創(chuàng)建b表或同名的表)
select * into b數(shù)據(jù)庫(kù).dbo.b表 from a數(shù)據(jù)庫(kù).dbo.a表 [where 條件]
執(zhí)行完此語(yǔ)句后,b數(shù)據(jù)庫(kù)中將會(huì)創(chuàng)建和a數(shù)據(jù)庫(kù).dbo.a表 一樣結(jié)構(gòu)的b表。通過(guò)此語(yǔ)句創(chuàng)建的b表沒(méi)有主鍵。
1、同服務(wù)器 select * from 數(shù)據(jù)庫(kù)名.dbo.表名 where 條件
2、不同服務(wù)器
SELECT * FROM OpenRowset('MSDASQL', 'Driver=SQL Server;Server=服務(wù)器名(或IP);UID=sa;PWD=服務(wù)器數(shù)據(jù)庫(kù)密碼', 數(shù)據(jù)庫(kù)名.dbo.表 ) where 條件
SELECT *
FROM OPENROWSET('SQLOLEDB','服務(wù)器名(或IP)';'sa';'服務(wù)器數(shù)據(jù)庫(kù)密碼',
'查詢的sql語(yǔ)句')
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=服務(wù)器名(或IP);User ID=sa;Password=服務(wù)器數(shù)據(jù)庫(kù)密碼'
).數(shù)據(jù)庫(kù)名.dbo.表 where 條件