iT邦幫忙

1

MSSQL 如何定時將A主機的table覆蓋到B主機的相同table

  • 分享至 

  • twitterImage

不好意思打擾了
請問要怎麼定時將A主機的某table整個覆蓋到B主機相同名稱的table呢?
看到很多文章都是寫複製資料到一樣的主機
想請問有辦法做到將某table整個從A->B主機嗎?
(我平常搬table都用匯入匯出精靈 可是這樣就不能用排程讓他定時執行)
我的想法是:
先TRUNCATE目標table所有的資料 再把另一台主機的table insert 進去
但是先TRUNCATE感覺很可怕 又不知道怎麼定時先備份單一table
不知道有沒有更安全的方法 謝謝!
*我好像知道怎麼用了!可是怎麼不能刪文><

froce iT邦大師 1 級 ‧ 2021-07-07 14:30:02 檢舉
寫程式介接。
B主機不要delete 所有資料,建議先rename或是用時間戳加原本表名當表名,這樣你就不用delete了。

另外在資料庫delete並不是就真的會完全把資料刪除、空間釋放...
所以不要搞那種每天delete全部再寫全部這種事。
haward79 iT邦研究生 2 級 ‧ 2021-07-07 14:35:03 檢舉
你沒有說明你的系統環境
例如:資料庫用哪家的?作業系統用哪家的?有沒有安裝其他相關工具?

以 Linux + MySQL 來說可以這樣做:
(1) 用 mysqldump 來備份資料庫,並寫成一個 bash file
(2) 使用 crontab 設定排程,定時執行 bash file
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
純真的人
iT邦大師 1 級 ‧ 2021-07-07 14:32:17
最佳解答

用osql指令+Window定時排程~
可以先備份,然後先清除B主機指定資料表(truncate table 某資料表),再複製A主機指定資料表到B主機指定資料表。
另外你的AB主機的伺服器物件→連結的伺服器,要先做好~
才方便下SQL直接複製過去(在OSql裡面下)

insert into B主機指定資料表
select *
from [A主機的伺服器].[資料庫].dbo.[資料表]

參考
https://docs.microsoft.com/zh-tw/sql/tools/osql-utility?view=sql-server-ver15

備份指令參考~(寫在Bat檔裡面,用window排程定時執行備份)

set ToDay=%date:~0,4%-%date:~5,2%-%date:~8,2%
osql -U 帳號 -P 密碼 -S 伺服器IP -n -Q "BACKUP DATABASE Test TO DISK='D:\SQL-Backup\Test-%ToDay%.bak'"
1
japhenchen
iT邦超人 1 級 ‧ 2021-07-07 15:08:15

同一台機器上的話建議是
Drop TABLE TABLE2
SELECT * INTO TABLE2 FROM TABLE1
的方式,兩行應該能搞定

不過,真的不聰明,為何不用trigger呢?

看更多先前的回應...收起先前的回應...

不同主機的話請加入SQLSERVER的伺服器物件→連結的伺服器,就可以在一個查詢句裡跨多個伺服器

SELECT * INTO DB1.dbo.TableY FROM ServerB.DB2.dbo.TableX

https://ithelp.ithome.com.tw/upload/images/20210707/20117954Z5ojfdkO6d.jpg

他們家好像是安裝一堆SQL Server主機
https://ithelp.ithome.com.tw/questions/10202476

btw ...... 十台伺服器也是比照辦理,比較好的做法就是設定訂閱,次一點的方法用trigger,下下之策才用DROP ... SELECT INTO .. FROM

lulu_meat iT邦研究生 5 級 ‧ 2021-07-08 08:59:17 檢舉

謝謝大神的回覆!
因為那台伺服器歷史太悠久
當初安裝沒有裝複寫的功能 現在無法停機
所以我當初才不考慮用複寫的功能
我第一次聽到trigger的方法~
我會去查一下用法~再次感謝您> <

3
一級屠豬士
iT邦大師 1 級 ‧ 2021-07-07 17:17:06

https://docs.microsoft.com/zh-tw/sql/relational-databases/replication/sql-server-replication?view=sql-server-ver15

SQL Server 有線上的中文文件.

複寫 在 匯入和匯出精靈的上一章.

請詳閱公開說明書.

/images/emoticon/emoticon12.gif

lulu_meat iT邦研究生 5 級 ‧ 2021-07-08 09:02:43 檢舉

謝謝大神的回覆!
因為那台伺服器歷史太悠久(十幾年了)
當初安裝沒有裝複寫的功能 現在也無法停機
所以我當初才不考慮用複寫的功能
再次感謝大神~

原來如此,辛苦了,加油!

我要發表回答

立即登入回答