資料庫復制
㈠ 怎麼拷貝資料庫
以下問題要說清:是什麼資料庫?
什麼版本?
從什麼操作系統到什麼操作系統?
在同一台機器上還是不同機器上?
資料庫規模有多大?有多少GB的數據?
很多資料庫不能直接拷貝的,ACCESS可以直接這么干
㈡ 如何將資料庫復制到另一個資料庫
第一步:首先,打開並連接sql Server,在源資料庫Source_db(源資料庫名稱)上右鍵,然後依次點擊「編寫表腳本為」→「CREATE到」→「新查詢編輯器窗口」。
第二步:在第1步產生的編輯器中按」crtl+a「組合鍵全選內容,然後右鍵「復制「(或按"crtl+c"鍵)。
第三步:新建查詢,然後右鍵」粘貼「(或ctrl+v);如圖所示,將代碼中Source_db(源資料庫名)改為target_db(目標資料庫名)。接著右鍵單擊」執行「執行代碼。
第四步:然後,在目標資料庫的表結構中就可以看到被復制過來的表了。
表的數據內容復制:
第一步:選中目標資料庫target_db,然後點擊」任務「→」導入數據「。
第二步:進入」SQL Server導入導出向導「,根據提示步驟操作。
第三步:選擇數據源(源資料庫)。
第四步:選擇目標(目標資料庫)、指定表復制或查詢。
第五步:選擇源表和源視圖:設置源表和目標表後,單擊「編輯映射」按鈕,在彈出窗口中選中「啟用標識插入」。(否則後面會出錯)
第六步:一直點擊「下一步」至最後完成操作。
㈢ SQL怎麼復制資料庫
SQL六種數據移動方法
1. 通過工具DTS的設計器進行導入或導出
DTS的設計器功能強大,支持多任務,也是可視化界面,容易操作,但知道的人一般不多,如果只是進行SQL Server資料庫中部分表的移動,用這種方法最好,當然,也可以進行全部表的移動。在SQL Server Enterprise Manager中,展開伺服器左邊的+,選擇資料庫,右擊,選擇All tasks/Import Data...(或All tasks/Export Data...),進入向導模式,按提示一步一步走就行了,裡面分得很細,可以靈活的在不同數據源之間復制數據,很方便的。而且可以另存成DTS包,如果以後還有相同的復制任務,直接運行DTS包就行,省時省力。也可以直接打開DTS設計器,方法是展開伺服器名稱下面的Data Transformation Services,選Local Packages,在右邊的窗口中右擊,選New Package,就打開了DTS設計器。值得注意的是:如果源資料庫要拷貝的表有外鍵,注意移動的順序,有時要分批移動,否則外鍵主鍵,索引可能丟失,移動的時候選項旁邊的提示說的很明白,或者一次性的復制到目標資料庫中,再重新建立外鍵,主鍵,索引。
其實建立資料庫時,建立外鍵,主鍵,索引的文件應該和建表文件分開,而且用的數據文件也分開,並分別放在不同的驅動器上,有利於資料庫的優化。
2. 利用Bcp工具
這種工具雖然在SQL Server7的版本中不推薦使用,但許多資料庫管理員仍很喜歡用它,尤其是用過SQL Server早期版本的人。Bcp有局限性,首先它的界面不是圖形化的,其次它只是在SQL Server的表(視圖)與文本文件之間進行復制,但它的優點是性能好,開銷小,佔用內存少,速度快。有興趣的朋友可以查參考手冊。
3. 利用備份和恢復
先對源資料庫進行完全備份,備份到一個設備(device)上,然後把備份文件復制到目的伺服器上(恢復的速度快),進行資料庫的恢復操作,在恢復的資料庫名中填上源資料庫的名字(名字必須相同),選擇強制型恢復(可以覆蓋以前資料庫的選項),在選擇從設備中進行恢復,瀏覽時選中備份的文件就行了。這種方法可以完全恢復資料庫,包括外鍵,主鍵,索引。
4. 直接拷貝數據文件
把資料庫的數據文件(*.mdf)和日誌文件(*.ldf)都拷貝到目的伺服器,在SQL Server Query Analyzer中用語句進行恢復:
EXEC sp_attach_db @dbname = 'test ',
@filename1 = 'd:\mssql7\data\test_data.mdf ',
@filename2 = 'd:\mssql7\data\test_log.ldf '
這樣就把test資料庫附加到SQL Server中,可以照常使用。如果不想用原來的日誌文件,可以用如下的命令:
EXEC sp_detach_db @dbname = 'test '
EXEC sp_attach_single_file_db @dbname = 'test ',
@physname = 'd:\mssql7\data\test_data.mdf '
這個語句的作用是僅僅載入數據文件,日誌文件可以由SQL Server資料庫自動添加,但是原來的日誌文件中記錄的數據就丟失了。
5. 在應用程序中定製
可以在應用程序(PB、VB)中執行自己編寫的程序,也可以在Query Analyzer中執行,這種方法比較靈活,其實是利用一個平台連接到資料庫,在平台中用的主要時SQL語句,這種方法對資料庫的影響小,但是如果用到遠程鏈接伺服器,要求網路之間的傳輸性能好,一般有兩種語句:
1> select ... into new_tablename where ...
2> insert (into) old_tablename select ... from ... where ...
區別是前者把數據插入一個新表(先建立表,再插入數據),後者是把數據插入已經存在的一個表中,我個人喜歡後者,因為在編程的結構上,應用的范圍上,第二條語句強於前者。
6. SQL Server的復制功能
SQL Server提供了強大的數據復制功能,也是最不易掌握的,具體應用請參考相關資料,值得注意的是要想成功進行數據的復制工作,有些條件是必不可少的:
1> SQL Server Agent必須啟動,MSDTC必須啟動。
2> 所有要復制的表必須有主鍵。
3> 如果表中有text或image數據類型,必須使用with log選項,不能使用with no_log選項。
另外max text repl size選項控制可以復制的文本和圖像數據的最大規模,超過這個限制的操作將失敗。
4> 在要進行復制的計算機上,應該至少是隱含共享,即共享名是C$或D$…。
5> 為SQL Server代理使用的Windows NT帳號不能是一個本地的系統帳號,因為本地的系統帳號不允許網路存取。
6> 如果參與復制的伺服器在另外的計算機域中,必須在這些域之間建立信任關系。
㈣ 怎麼才能完整復制MySQL資料庫
有兩種辦法。
1、在B機器上裝mysql。
將A機器上的mysql/data下的你的資料庫目錄整個拷貝下來。
將B機器上的mysql服務停止。
找到B機器上的mysql/data目錄,將你拷貝的目錄粘貼進去,然後啟動mysql服務就可以了。
2、使用SQL語句備份和恢復
你可以使用SELECT INTO OUTFILE語句備份數據,並用LOAD DATA INFILE語句恢復數據。這種方法只能導出數據的內容,不包括表的結構,如果表的結構文件損壞,你必須要先恢復原來的表的結構。
語法:
SELECT * INTO {OUTFILE ¦ DUMPFILE} 』file_name』 FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 』file_name.txt』 [REPLACE ¦ IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE 』file_name』
在dos命令提示符下使用mysqlmp命令進行備份.
如下:
C:\Documents and Settings\Administrator>mysqlmp yinshi >c:\\backup.txt -uroot
-p12142022
㈤ 怎麼將資料庫的數據復制到另一個資料庫
第一步:首先,打開並連接Sql
Server,在源資料庫Source_db(源資料庫名稱)上右鍵,然後依次點擊「編寫表腳本為」→「CREATE到」→「新查詢編輯器窗口」。
第二步:在第1步產生的編輯器中按」crtl+a「組合鍵全選內容,然後右鍵「復制「(或按"crtl+c"鍵)。
第三步:新建查詢,然後右鍵」粘貼「(或ctrl+v);如圖所示,將代碼中Source_db(源資料庫名)改為target_db(目標資料庫名)。接著右鍵單擊」執行「執行代碼。
第四步:然後,在目標資料庫的表結構中就可以看到被復制過來的表了。
表的數據內容復制:
第一步:選中目標資料庫target_db,然後點擊」任務「→」導入數據「。
第二步:進入」SQL
Server導入導出向導「,根據提示步驟操作。
第三步:選擇數據源(源資料庫)。
第四步:選擇目標(目標資料庫)、指定表復制或查詢。
第五步:選擇源表和源視圖:設置源表和目標表後,單擊「編輯映射」按鈕,在彈出窗口中選中「啟用標識插入」。(否則後面會出錯)
第六步:一直點擊「下一步」至最後完成操作。
㈥ 如何復制資料庫的結構
先創建一個資料庫命名為資料庫B,然後直接將資料庫A中腳本中有關創建表格,主鍵,類型什麼的都復制到資料庫B中的腳本中,這樣執行以後的資料庫的結構就和資料庫A的資料庫一樣了,只是名字不一樣。
㈦ 怎樣將一個資料庫完整復制到另一個sql伺服器
1、開始菜單--->程序,打開SQL Server Management Studio。
㈧ 怎麼復制MySQL資料庫
項目上 MySQL還原 SQL 備份經常會碰到一個錯誤如下,且通常出現在導入視圖、函數、存儲過程、事件等對象時,其根本原因就是因為導入時所用賬號並不具有SUPER 許可權,所以無法創建其他賬號的所屬對象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常見場景:1. 還原 RDS 時經常出現,因為 RDS 不提供 SUPER 許可權;2. 由開發庫還原到項目現場,賬號許可權等有所不同。
處理方式:
1. 在原庫中批量修改對象所有者為導入賬號或修改SQL SECURITY為Invoker;2. 使用 mysqlmp 導出備份,然後將 SQL 文件中的對象所有者替換為導入賬號。
二、問題原因我們先來看下為啥會出現這個報錯,那就得說下 MySQL 中一個很特別的許可權控制機制,像視圖、函數、存儲過程、觸發器等這些數據對象會存在一個DEFINER和一個SQL SECURITY的屬性,如下所示:
--視圖定義CREATEALGORITHM=UNDEFINEDDEFINER=`root`@`%`SQLSECURITYDEFINERVIEWv_test
--函數定義CREATEDEFINER=`root`@`%`FUNCTION`f_test()`RETURNSvarchar(100)SQLSECURITYDEFINER
--存儲過程定義CREATEDEFINER=`root`@`%`PROCEDURE`p_test`()SQLSECURITYDEFINER
--觸發器定義CREATE DEFINER=`root`@`%` trigger t_test
--事件定義CREATE DEFINER=`root`@`%` EVENT `e_test`
DEFINER:對象定義者,在創建對象時可以手動指定用戶,不指定的話默認為當前連接用戶;
SQL SECURITY:指明以誰的許可權來執行該對象,有兩個選項,一個為DEFINER,一個為INVOKER,默認情況下系統指定為 DEFINER;DEFINER:表示按定義者的許可權來執行;INVOKER:表示按調用者的許可權來執行。
如果導入賬號具有 SUPER 許可權,即使對象的所有者賬號不存在,也可以導入成功,但是在查詢對象時,如果對象的SQL SECURITY為DEFINER,則會報賬號不存在的報錯。ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist
改寫好處:1. 可以避免還原時遇到 DEFINER 報錯相關問題;2. 根據輸出信息知道備份是否正常進行,防止備份中遇到元數據鎖無法獲取然後一直卡住的情況。
㈨ 資料庫怎麼復制
把你要復制的資料庫導出,然後還原,還原的時候取一個不一樣的名字,這樣你就有2個一樣數據不一樣名字的資料庫了。
㈩ 如何做到資料庫復制
不行啊,代碼如下,麻煩binbin幫我看看:Acad::ErrorStatus
es;AcDbDatabase
*
pDb;AcApDocument*
pDoc;pDoc=acDocManager->curDocument();es=acDocManager->lockDocument(pDoc);pDb=acdbHostApplicationServices()->workingDatabase();AcDbDatabase
*acDb;acDb=new
AcDbDatabase(true,true);acDb->readDwgFile("d:\\test.dwg",_SH_DENYNO,true);AcGeMatrix3d
mat;mat.setToIdentity();es=pDb->insert(mat,acDb);//在這里返回值是es為eWasOpenForReades=acDocManager->unlockDocument(pDoc);我想將外部的一個資料庫實體、層復制到當前文檔中。