1. 程式人生 > >SQLServer2012釋出與訂閱

SQLServer2012釋出與訂閱

簡介

SQL Server中的複製(Replication)是SQL Server高可用性的核心功能之一。
釋出指的是可以釋出的文章的集合,這些文章包括表,儲存過程,檢視和使用者自定義函式
訂閱是相對釋出的一個概念,訂閱定義了訂閱伺服器從哪個分發伺服器接收發布。有兩類訂閱方式,推送訂閱(Push)和請求訂閱(Pull)

釋出型別說明

快照發布: 直接掃描同一時刻的資料庫狀態 。 把所有出版資料中的資料從源資料庫送至目標資料庫,而不僅僅是變化的資料。

合併釋出: 在代理伺服器上進行相關操作,相當於2個數據庫都可以讀寫

快照複製

相當於每次計劃時,將整個資料庫都複製過去,那太耗費時間和空間了。

事務複製

相當於1個讀,1個讀寫

合併複製

預設情況下,合併代理將訂閱伺服器上的更改上載到釋出伺服器,然後將釋出伺服器上的更改下載到訂閱伺服器。

相當於2個數據庫都有作用了

問題及解決

對路徑的訪問拒絕

對路徑“D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\ReplData\unc\WIN-OSN0FQ89IR5_HN-SAFEEXAMCORE_HN-SAFEEXAMCORE\20181226143453\”的訪問被拒絕。

給目錄 ReplData D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\ReplData 新增 everyone 的讀寫許可權

參考: https://blog.csdn.net/qq_33022911/article/details/79604124

SQLServerAgent 錯誤

行作業 WIN-OSN0FQ89IR5-HN-SafeExamCore-HN-SafeExamCore-2 的請求(來自 使用者 WIN-OSN0FQ89IR5\Administrator)被拒絕,因為該作業已應 使用者 WIN-OSN0FQ89IR5\Administrator 的請求正在執行.
已將資料庫上下文更改為 ‘HN-SafeExamCore’。 (Microsoft SQL Server,錯誤: 22022)

原因:正在執行作業,等待。

未執行,“嚴重”狀態下的效能

也可以間隔定時任務時間,等下一次執行時,就不會出現此問題。或者修改報警閥值

小技巧

恢復資料庫,並修改恢復資料庫的名字

還是程式碼可靠,用下面的程式碼可以成功的克隆資料庫

RESTORE DATABASE [DB]
FROM DISK ='C:\DA.bak'
with nounload, replace, stats = 10,
MOVE 'DB' TO 'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\DB.mdf',
MOVE 'DB_log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\DB_log.ldf'
GO

參考資料

SQL Server 2012複製教程以及複製的幾種模式
https://www.cnblogs.com/running-mydream/p/4412784.html

同一臺機器上建立釋出和訂閱演示
https://blog.csdn.net/qq_33022911/article/details/79604124

在複製監視器中檢視釋出和訂閱狀態
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/ms151271(v=sql.110)