sql發布訂閱
1、事務發布,效率還不錯,對網路穩定性要求較高,帶寬使用較少
2、快照發布,其實相當於給現在的數據拍了張照片,然後拷貝走,再在其他伺服器上恢復,適合使用移動硬碟拷貝
3、具有可更新訂閱的事務發布,效率最高,對網路穩定性要求較高,帶寬使用較少。
4、合並發布,性能在1和2的之間
② sqlserver2008在創建發布訂閱的時候,執行間隔為什麼最小10秒
發布訂閱默認最小時間間隔就是10秒,即使你選擇的時間是實時,但其實也不會是實時。你可以將發布訂閱看成是由sqlserver建立的一系列job,在這些job里自動完成你需要的數據同步工作。想要真正理解這個10秒間隔,理解整個發布訂閱的數據流程,你就會非常清楚。
首先發布庫做自己的事務,完成後寫到自己的日誌;
然後在分發伺服器上有個日誌讀取器,它會隔一會就來讀取一下有沒有新日誌,有就進行分發工作,沒有就繼續等待;
訂閱收到日誌,然後進行重建工作,讓訂閱端也能看到對應的數據。
可能你會覺得為什麼日誌讀取器不一直standby,因為這需要成本,而資料庫是非常在意成本的,所以不會一直讀取,而是隔一個很小的間隔讀取一次。
③ SQL資料庫自帶的(發布,訂閱)數據同步問題
回答1:再次同步只會同步變化的數據。因此不必擔心數據量大的問題
回答2:可以測試一次發布/訂閱所需要的總體時間,建議同步時間比這個總時間略大
回答3:發布訂閱無法做到實時同步。如需實時同步,可嘗試做日誌傳送、鏡像,這兩種可以達到用戶感官上的實時同步
④ sql srver怎麼取消發布和訂閱
以下方法均為
事務復制
--PUSH方式
1、刪除單個的發布
:
復制-->
本地發布-->
右擊-->
刪除,如下圖,然後再把對應的知裂訂閱伺服器刪除掉,或者等待執行:sp_MSdistribution_cleanup
的JOB(分發清除:
distribution)默認訂閱72小時失效之後自動刪除。
2、刪除全部的發布:
復制-->
右擊
-->
禁用發布和分發,如下圖,這個會同時的把分發伺服器的配置清掉,需要重新配置的哦。。
其實只是謹伏執行了一個腳本
use
[master]
exec
sp_dropdistributor
@no_checks
=
1
GO
/*
[
@no_checks=]
no_checks
指示在刪除分發伺服器之前是否檢查有無依賴對象。no_checks
的數據類型為
bit,默認值為
0。
如果為
0,則
sp_dropdistributor
將執搭晌閉行檢查,以確保除分發伺服器以外的所有發布和分發對象都已刪除。
如果為
1,則
sp_dropdistributor
將在卸載分發伺服器之前刪除所有發布和分發對象。
[
@ignore_distributor=]
ignore_distributor
指示是否在未連接到分發伺服器的情況下執行此存儲過程。ignore_distributor
的數據類型為
bit,默認值為
0。
如果為
0,則
sp_dropdistributor
將連接到分發伺服器,並刪除所有復制對象。
如果
sp_dropdistributor
無法連接到分發伺服器,則存儲過程將失敗。
如果為
1,則不與分發伺服器建立連接,並且不刪除復制對象。
如果分發伺服器正在卸載或持久離線,才使用它。
直到分發伺服器在未來某個時間重新安裝之後,才會刪除分發伺服器中的該發布伺服器的對象。
*/
--注意:
sp_dropdistributor
用於所有類型的復制。
不過不是建議直接的界面操作。
3、對於某些時候可能刪除不掉,這個時候可以直接trace一下,然後把進程殺掉
4、或者對於附加的資料庫不注意可能會出現發布的錯誤,你也刪除不掉。會報下面的錯誤。
無法作為資料庫主體執行,因為主體
"dbo"
不存在、無法模擬這種類型的主體,或您沒有所需的許可權。
已將資料庫上下文更改為
'AdventureWorks2008'。
(Microsoft
SQL
Server,錯誤:
15517)
這個時候可以查一下資料庫屬性->文件->所有者如果沒有話,填個sa再試一次就可以。