![不同數(shù)據(jù)庫(kù)之間復(fù)制表的數(shù)據(jù)的方法_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/6c06c3b7-0476-4319-a954-631aff85c6af/6c06c3b7-0476-4319-a954-631aff85c6af1.gif)
![不同數(shù)據(jù)庫(kù)之間復(fù)制表的數(shù)據(jù)的方法_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/6c06c3b7-0476-4319-a954-631aff85c6af/6c06c3b7-0476-4319-a954-631aff85c6af2.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、不同數(shù)據(jù)庫(kù)之間復(fù)制表的數(shù)據(jù)的方法當(dāng)表目標(biāo)表存在時(shí):insertinto目的數(shù)據(jù)庫(kù).表select*from源數(shù)據(jù)庫(kù).表當(dāng)目標(biāo)表不存在時(shí):select*into目的數(shù)據(jù)庫(kù).表from源數(shù)據(jù)庫(kù).表-如果在不同的SQL之間:insertintoopenrowset('sqloledb','目的服務(wù)器名''sa'",目的數(shù)據(jù)庫(kù).dbo.表)select*from源數(shù)據(jù)庫(kù).表-或用鏈接服務(wù)器:創(chuàng)建鏈接服務(wù)器execsp_addlinkedserver'srv_lnk',",'SQLOLEDB','
2、遠(yuǎn)程服務(wù)器名'execsp_addlinkedsrvlogin'srv_lnk','false',null,'sa','密碼'execsp_serveroption'srv_lnk','rpcout','true'-這個(gè)允許調(diào)用鏈接服務(wù)器上的存儲(chǔ)過(guò)程go-查詢示例select*fromsrv_lnk.數(shù)據(jù)庫(kù)名.dbo.表名-導(dǎo)入示例select*into表fromsrv_lnk.數(shù)據(jù)庫(kù)名.dbo.表名go-后刪除鏈接服務(wù)器execsp_dropserver'srv_l
3、nk','droplogins'-如果是將一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)全部復(fù)制到另一個(gè)數(shù)據(jù)庫(kù),而且兩個(gè)庫(kù)結(jié)構(gòu)完全一樣的話,就用備份/恢復(fù)的方式:/*-將一個(gè)數(shù)據(jù)庫(kù)完整復(fù)制成另一個(gè)數(shù)據(jù)庫(kù)-*/*-調(diào)用示例execp_CopyDbddbname='test'-*/ifexists(select*fromdbo.sysobjectswhereid=object_id(N'dbo.p_CopyDb')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropproceduredbo.p_CopyDbGOcreat
4、eprocp_CopyDbsdbnamesysname=",-定義要復(fù)制的數(shù)據(jù)庫(kù)名,默認(rèn)為當(dāng)前數(shù)據(jù)庫(kù)ddbnamesysname,-定義復(fù)制后生成的數(shù)據(jù)庫(kù)名overexistbit=1,-是否覆蓋已經(jīng)存在的數(shù)據(jù)庫(kù)killuserbit=1-是否關(guān)閉用戶使用進(jìn)程,僅overexist=l時(shí)有效asdeclaresqlvarchar(8000),bpathvarchar(8000),rpathvarchar(8000)-得到要復(fù)制的數(shù)據(jù)庫(kù)名ifisnull(sdbname,")="setsdbname=db_name()-得到臨時(shí)備份數(shù)據(jù)目錄及文件名selectbpa
5、th=rtrim(reverse(filename)frommaster.sysfileswherename='master'selectbpath=substring(bpath,charindex('',bpath)+l,8000),bpath=reverse(substring(bpath,charindex('',bpath),8000)+'BACKUP'mailto:+sdbname+%20_%20+convert(varchar,getdate(),112)+'_'+replace(convert(va
6、rchar,getdate(),108),':',")+'.bak'-生成數(shù)據(jù)庫(kù)備份語(yǔ)句,進(jìn)行數(shù)據(jù)庫(kù)備份setsql='backupdatabasemailto:%20+sdbname+'tomailto:disk=%20%20%20+bpath+'''withNOINIT'exec(sql)-根據(jù)備份文件恢復(fù)成新的數(shù)據(jù)庫(kù)(完成復(fù)制工作)setsql='restoredatabasemailto:%20+ddbname+'frommailto:disk=%20%20%20+bpath+
7、39;withfile=1'+casewhenoverexist=lthen',replace'else''end-得到數(shù)據(jù)庫(kù)存放的默認(rèn)目錄-得到SQL安裝時(shí)設(shè)置的數(shù)據(jù)文件路徑selectrpath=rtrim(reverse(filename)frommaster.sysfileswherename='master'selectrpath=reverse(substring(rpath,charindex('',rpath),8000)-添加移動(dòng)邏輯文件的處理-從備份文件中獲取邏輯文件名declarelfnnvarcha
8、r(128),tpchar(1),iint-創(chuàng)建臨時(shí)表,保存獲取的信息createtable#tb(lnnvarchar(128),pnnvarchar(260),tpchar(1),fgnnvarchar(128),sznumeric(20,0),Msznumeric(20,0)-從備份文件中獲取信息insertinto#tbexec('restorefilelistonlyfrommailto:disk=%20%20%20+bpath+)declare#fcursorforselectln,tpfrom#tbopen#ffetchnextfrom#fintolfn,tpseti=0
9、whilefetch_status=0beginselectsql=sql+',movemailto:%20%20%20+lfn+tomailto:%20%20%20+rpath+ddbname+cast(iasvarchar)+casetpwhen'D'then'.mdf'''else'.ldf'''end,i=i+1fetchnextfrom#fintolfn,tpendclose#fdeallocate#f-關(guān)閉用戶進(jìn)程處理ifoverexist=landkilluser=lbegindeclares
10、pidvarchar(20)declare#spidcursorforselectspid=cast(spidasvarchar(20)frommaster.sysprocesseswheredbid=db_id(ddbname)open#spidfetchnextfrom#spidintospidwhilefetch_status=0beginexec('killmailto:%20+spid)fetchnextfrom#spidintospidendclose#spiddeallocate#spidend-恢復(fù)數(shù)據(jù)庫(kù)exec(sql)-刪除備份的臨時(shí)文件setsql='de
11、l"mailto:%20+bpath+%20"execmaster.xp_cmdshellsql,no_outputselectsql,bpath,rpathgo-如果一定要逐個(gè)表復(fù)制,用:use源庫(kù)goexecsp_msforeachtable'select*into目標(biāo)庫(kù).?from?'最好的辦法是用DTS(導(dǎo)入導(dǎo)出工具)做好DTS包。-如果兩個(gè)庫(kù)的結(jié)構(gòu)有些不同,就用:/*-數(shù)據(jù)庫(kù)數(shù)據(jù)復(fù)制將一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)復(fù)制到另一個(gè)數(shù)據(jù)庫(kù)如果某列在目標(biāo)數(shù)據(jù)庫(kù)中為標(biāo)識(shí)列,將不會(huì)被復(fù)制適用范圍:數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生了變化,想將舊數(shù)據(jù)庫(kù)進(jìn)行升級(jí)這樣就可以根據(jù)新的數(shù)據(jù)庫(kù)結(jié)構(gòu)創(chuàng)建一
12、個(gè)空庫(kù),然后將舊數(shù)據(jù)庫(kù)的所有數(shù)據(jù)復(fù)制到新庫(kù)中-*/*-調(diào)用示例execp_copydb'源數(shù)據(jù)庫(kù)','目標(biāo)數(shù)據(jù)庫(kù)'execp_copydb'acc_五醫(yī)','acc_演示數(shù)據(jù)8'-*/ifexists(select*fromdbo.sysobjectswhereid=object_id(N'dbo.p_copydb')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropproceduredbo.p_copydbGOcreateprocp_copydbo_dbname
13、sysname,-要復(fù)制數(shù)據(jù)的數(shù)據(jù)庫(kù)-源數(shù)據(jù)庫(kù)n_dbnamesysname,-接收數(shù)據(jù)的數(shù)據(jù)庫(kù)-目標(biāo)數(shù)據(jù)庫(kù)cleardbbit=0-清空目標(biāo)數(shù)據(jù)庫(kù)asdeclaresqlnvarchar(4000)-禁用約束,防止復(fù)制時(shí)的數(shù)據(jù)沖突setsql='declare#tbccursorforselectname,tbname=object_name(parent_obj)frommailto:%20+n_dbname+%20.sysobjectswherextypein("C","F")'exec(sql)declarenamesysname
14、,tbnamesysnameopen#tbcfetchnextfrom#tbcintoname,tbnamewhilefetch_status=Obeginsetsql='altertablemailto:%20+n_dbname+%20.%20+tbname+NOCHECKCONSTRAINT'+name+''exec(sql)fetchnextfrom#tbcintoname,tbnameendclose#tbc-復(fù)制數(shù)據(jù)declaresql1varchar(8000)setsql='declare#fr
15、om'mailto:+o_dbname+%20.sysobjectsainnerjoin'mailto:+n_dbname+%20.=wherea.xtype="U"andb.xtype="U"'exec(sql)open#tbfetchnextfrom#tbintotbnamewhilefetch_status=0beginselectsqll=",sql='selectsqll=sqll+","++丁from(selectnam
16、efrommailto:%20+o_dbname+%20.syscolumnswhereidin(selectidfrommailto:%20+o_dbname+%20.sysobjectswheremailto:name=%20%20%20+tbname+)ainnerjoin(selectnamefrommailto:%20+n_dbname+%20.syscolumnswherestatus<>0x80andidin(selectidfrommailto:%20+n_dbname+%20.sysobjectswheremailto:name=%20%20%20+tbname+
17、)='execsp_executesqlsql,N'sqllnvarchar(4000)out',sqlloutselectsql1=substring(sqll,2,8000)exec('insertintomailto:%20+n_dbname+%20.%20+tbname+%20(%20+sqll+')selectmailto:%20+sql1+frommailto:%20+o_dbname+%20.%20+tbname+%20)iferror<>0print('insertintomailto:%20+n_dbname+%20.%20+tbname+%20(%20+sqll+')selectmailto:%20+sql1+frommailto:%20+o_dbname+%20.%20+tbname+%20)fetchnextfrom#
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2025年中國(guó)減速器行業(yè)市場(chǎng)調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國(guó)互聯(lián)網(wǎng)+服裝行業(yè)發(fā)展前景預(yù)測(cè)及投資規(guī)劃建議報(bào)告
- 提升復(fù)合型人才培養(yǎng)質(zhì)量的策略
- 中國(guó)石化購(gòu)油合同范本
- 2025年加油站安全管理及事故應(yīng)急預(yù)案合同
- epc內(nèi)部合同范例
- 個(gè)人網(wǎng)店店鋪轉(zhuǎn)讓合同范本
- 2020-2025年中國(guó)無(wú)人船行業(yè)市場(chǎng)調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 勞務(wù)廣告安裝合同范例
- 作品著作版權(quán)合同范例
- 《東北大學(xué)宣傳》課件
- 2025年山東鐵投集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 社會(huì)主義從空想到科學(xué)的發(fā)展
- 心血管醫(yī)療器械白皮書(shū)
- 《軌道交通工程盾構(gòu)施工技術(shù)》 課件 項(xiàng)目2 盾構(gòu)構(gòu)造認(rèn)知
- 《傳統(tǒng)發(fā)酵饅頭酸菜》課件
- 《港珠澳大橋演講》課件
- 《有機(jī)化學(xué)》課件-第十章 羧酸及其衍生物
- 人教版道德與法治五年級(jí)下冊(cè)《第一單元 我們一家人》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 2024-2030年中國(guó)茶具行業(yè)市場(chǎng)競(jìng)爭(zhēng)格局及未來(lái)發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2024年高考真題-政治(福建卷) 含解析
評(píng)論
0/150
提交評(píng)論