無法刪除複寫發行集,因為主體dbo不存在(Error Code 15517)錯誤排除

  • 3734
  • 0

無法刪除複寫發行集,因為主體dbo不存在(Error Code 15517)錯誤排除

一月份的SQL PASS聚會結束後,有位朋友問了我一個問題。

他的一個複寫發行集一直無法被刪除,他告訴我系統顯示訊息

是dbo權限有問題。當下我也無法回覆他(複寫我也不是很懂),

因此請他到SQL PASS的FB提問,我會幫他尋求解答。

 

回到家後針對他提出的關鍵字上網google一下,發現了一個討論串

似乎有相關連,連結如下:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a4a6361a-01b0-4ed5-b624-94073c5930b1/delete-publication-the-principal-dbo-does-not-exist-this-type-of-principal-cannot-be?forum=sqlreplication

經閱讀過討論串內容後,發現應該是Databases中dbo這一個user沒有

對應到login帳號,導致要刪除發行集時會產生dbo不存在的錯誤訊息

 

下圖是我模擬出來的錯誤訊息

publish

 

 

因為錯誤訊息表示主體dbo不存在,因此我們就到Database的屬性頁去看(如下圖),

您會發現資料庫擁有者的欄位會是空值,此時我們只要指定一個login帳號當該

Database的Owner後,再刪除該發行集就不會發生該錯誤訊息了。

p2

 

一般會有擁有者是空值的情況大多是該Database是從別台SQL Server利用還原或是附加的

方式搬到另一台SQL Server。而該Database的擁有者login帳號在目的SQL Server上並不存在

,因此搬到目的SQL Server後會因為該Database的dbo對應不到login帳號而導致擁有者欄位

變成空值。

我是ROCK

rockchang@mails.fju.edu.tw