教你怎麼從一台sql server伺服器拷貝資料到另外一台sql server伺服器,sqlserver

來源:互聯網
上載者:User

教你怎麼從一台sql server伺服器拷貝資料到另外一台sql server伺服器,sqlserver

平台說明:兩台sql server2005伺服器,上面裝了兩個相同的資料庫

最近由於項目需要,需要將其中一台伺服器上的資料庫的資料拷貝到另外一台伺服器上的資料庫上,經過了很多google後終於完成了,在此做個詳細的記錄,希望能夠幫到大家及自己。

一、第一步:sql添加伺服器

首先,我們需要用sql 指令碼串連上另外一個伺服器,

use mastergo/*添加伺服器*/EXEC sp_addlinkedserver@server = 'hang',  /*此名字可以隨便取*/@srvproduct = 'SQL',@provider = 'SQLOLEDB',@datasrc = '10.130.26.x' /*說明:另外一台伺服器的IP*/go/*登陸伺服器*/EXEC sp_addlinkedsrvlogin@rmtsrvname ='hang',  /*需要跟前面串連的同一個名字*/@useself = 'false',@locallogin = 'sa',@rmtuser = 'sa',@rmtpassword = 'wlw' /*登陸密碼*/
上面的代碼是sql串連sql的代碼,其他資料庫之間的串連可參考:http://msdn.microsoft.com/zh-cn/library/ms190479.aspx

二、第二步: 編寫指令碼測試

這裡需要說明一下的是,當我們用上面的代碼添加好伺服器之後,以後就不用再次串連了,比如我要查詢:

select * from hang.epark.dbo.parkHistory/*hang是剛剛我建立的伺服器名字,epark是伺服器上的資料庫,dbo.parkHistory是具體的表*/   

然後就可以編寫我們需要用到的代碼先在查詢時段測試一下,是否能夠成功執行

insert hang.epark.dbo.parkHistory(userNo,cardID,parkingNo_longquan) select userNo,cardID,parkingNo from epark.dbo.parkHistory where not exists(select * from hang.epark.dbo.parkHistory where parkingNo_longquan=epark.dbo.parkHistory.parkingNo)
這裡用到表的複製語句:insert into ()selcet ,還有not exists(),這個not exists就是將一個表中有,而另外一個表沒有的列返回。比如我的這個語句,因為我需要定時將一台伺服器上的parkHistory更新的資料上傳到另外一台伺服器上的parkHistory上面,所以我已經上傳過的資料就不再上傳,not exists就是這麼個功能。

代碼測試通過後,我們就可以建立定時任務了。

三、第三步: 添加定時任務

 首先我們開啟資料庫後在 伺服器對象->串連伺服器,

然後右鍵hang(具體是你自己串連的資料庫,這個就是我之前用sql語句串連的)->屬性

原本是沒有NT AUTHORITY\SYSTEM帳號的,這是我自己添加的,你也需要將NT AUTHORITY\SYSTEM添加到使用者映射,遠端使用者和遠程密碼就是另外一台資料庫登陸的密碼,一般用sa,或是你自己建的使用者名稱。然後在下面選擇用 使用此安全上下文建立串連 然後輸入使用者名稱和密碼;以上這個操作主要是為了避免出現“已以使用者 NT AUTHORITY/SYSTEM 的身份執行。 使用者 'NT AUTHORITY/ANONYMOUS LOGON' 登入失敗。 [SQLSTATE 28000] (錯誤 18456).  該步驟失敗。”的錯誤

接下來需要開啟sql server代理服務:開始-->>>運行-->>>輸入"services.msc"-->>>進入服務,開啟SQL Server Agent服務,並設定為自動

接下來開啟一個任務:http://www.cnblogs.com/IPrograming/archive/2012/03/08/2384776.html

註:錯誤處理

SQL SERVER2005裡面,啟動SQL代理服務,啟動正常,但是在sql server 代理還是顯示已禁用代理 xp ,在查詢時段執行以下代碼:

  1. sp_configure 'show advanced options', 1;  
  2. GO  
  3. RECONFIGURE WITH OVERRIDE;   --加上WITH OVERRIDE  
  4. GO  
  5. sp_configure 'Agent XPs', 1;  
  6. GO  
  7. RECONFIGURE WITH OVERRIDE     --加上WITH OVERRIDE  
  8. GO


問sqlserver2005資料庫要怎從一台伺服器轉移到另一台伺服器?

這是因為視圖的名稱和表名稱都一樣了,所以預設的匯入資料的時候就把視圖的資料匯入到相同的表名稱的表裡邊了

以上,希望對你有所協助!
 
怎將一個sql資料庫資料完全匯入另一台伺服器的sql資料庫中?

如果2台機子有串連的話用預存程序寫
create procedure copyab
as
insert into a
select *
from [資料庫b的ip].b.要複製資料的表名
就可以了
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.