1. 程式人生 > >給大家說明怎麼從一臺sql server伺服器拷貝資料到另外一臺sql server伺服器

給大家說明怎麼從一臺sql server伺服器拷貝資料到另外一臺sql server伺服器

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

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

一、第一步:sql新增伺服器

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

  1. use master  
  2. go  
  3. /*新增伺服器*/  
  4. EXEC sp_addlinkedserver  
  5. @server = 'hang',  /*此名字可以隨便取*/  
  6. @srvproduct = 'SQL',  
  7. @provider = 'SQLOLEDB'
    ,  
  8. @datasrc = '10.130.26.x' /*說明:另外一臺伺服器的IP*/  
  9. go  
  10. /*登陸伺服器*/  
  11. EXEC sp_addlinkedsrvlogin  
  12. @rmtsrvname ='hang',  /*需要跟前面連線的同一個名字*/  
  13. @useself = 'false',  
  14. @locallogin = 'sa',  
  15. @rmtuser = 'sa',  
  16. @rmtpassword = 'wlw' /*登陸密碼*/  
上面的程式碼是sql連線sql的程式碼,其他資料庫之間的連線可參考:http://msdn.microsoft.com/zh-cn/library/ms190479.aspx

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

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

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

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

  1. insert hang.epark.dbo.parkHistory(userNo,cardID,parkingNo_longquan)   
  2. select userNo,cardID,parkingNo   
  3. from epark.dbo.parkHistory wherenot 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服務,並設定為自動

注:錯誤處理

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