程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> 在復制設置中可能發生的錯誤和沖突類型

在復制設置中可能發生的錯誤和沖突類型

編輯:SyBase綜合文章
 

SQL Remote 被設計為允許在多個不同站點更新數據庫。需要小心設計以避免復制錯誤,特別是如果數據庫具有復雜結構時。本文描述在復制設置中可能發生的錯誤和沖突類型;後面幾節描述可如何設計發布,從而避免錯誤和管理沖突。

注釋:在此不討論傳送錯誤本文中不討論和消息傳送失敗相關的問題。

復制錯誤

復制錯誤分為以下幾類:

·重復主鍵錯誤

兩個用戶使用相同的主鍵值插入行,或者一個用戶更新了主鍵,第二個用戶插入具有該新值的主鍵。復制系統中到達給定數據庫的第二個操作失敗,因為它將產生重復的主鍵。

·未找到行錯誤

一個用戶刪除了行 (即具有給定主鍵值的行)。

第二個用戶在另一站點更新或刪除同一行。

在這種情況下,第二個語句失敗,因為找不到該行。

·參照完整性錯誤

如果發布中包括包含外鍵的列,但不包括相關的主鍵,則抽取實用程序在遠程數據庫不使用外鍵定義,這樣在遠程數據庫的 INSERT 就不會失敗。

這一點可以通過在表定義中包括適當的缺省值來解決。

當主表具有 SUBSCRIBE BY 表達式,而相關外表沒有時,也可發生參照完整性錯誤;此時可能復制外表中的行,但主表中的行可能從發布中被排除。

復制沖突

復制沖突和錯誤不同。如果正確處理,沖突在 SQL Remote 中不是問題。

沖突:假設一個用戶更新了行,第二個用戶在另一站點更新同一行,則第二個用戶的操作成功,且 SQL Remote 允許通過觸發觸發器 (Adaptive Server Anywhere) 或調用過程 (Adaptive Server

Enterprise),從而以使要更改數據有意義的方式來解決這些沖突。

沖突將在許多安裝中發生。 SQL Remote 允許將使用觸發器和過程的適當沖突解決方法作為 SQL Remote 安裝的常規操作的一部分。

必須通過設計在設置中排除復制中的 SQL 錯誤。 SQL Remote 包括一個幫助跟蹤 SQL 語句中的錯誤的選項,但該選項並不是用來解決這些錯誤的。

通過設置 Replication_error 選項,可在指定發生 SQL 錯誤時消息代理調用的存儲過程。缺省情況下,不調用任何存儲過程。

在 Adaptive Server Anywhere 中設置 Replication_error 選項:

•發出以下語句:

SET OPTION
 remote-user.Replication_error
 = 'procedure-name'

其中 remote-user 是消息代理命令行中的用戶 ID, procedure-name 是檢測到 SQL 錯誤時調用的過程。

◆在 Adaptive Server Enterprise 中設置 Replication_error 選項:

•發出以下語句:

exec sp_remote_option Replication_error, procedure-
name
 go

其中 procedure-name 是檢測到 SQL 錯誤時調用的過程。

復制錯誤過程的要求 復制錯誤過程必須有類型為 CHAR、 VARCHAR 或 LONG VARCHAR的一個參數。該過程用 SQL 錯誤消息調用一次,用引起錯誤的 SQL 語句調用一次。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved