Спасибо за ответ и предоставленные вами ссылки. На самом деле я уже прочитал некоторые из них, и я также смог провести некоторое тестирование этих решений.
Для адаптера SQL кластеризация хоста BizTalk окажется хорошим решением, но не позволит вам максимально использовать преимущество BizTalk Group (избыточность хоста) для масштабируемости. Поэтому по этой причине мы решили, что будем избегать кластерного решения, но для MessageBox, который действительно нуждается в кластеризации для высокой доступности.
То, что мы пытаемся сделать, - это иметь Active / Active или, скажем так, балансировку нагрузки с помощью BizTalk Server Group, что означает, что у нас действительно будет несколько запросов на приемный адаптер SQL одновременно.
Первоначально мое решение было на уровне запросов, обрабатывая его через подсказки блокировки, ниже приведен пример моего SP.
MERGE INTO EmployeeComp
USING (SELECT EmployeeID
FROM
[AdventureWorks].[dbo].[EmployeeComp]
WITH (READPAST, UPDLOCK)
WHERE
[AdventureWorks].[dbo].[EmployeeComp].[Status] = 0) e(EmployeeID)
ON EmployeeComp.EmployeeID = e.EmployeeID
WHEN MATCHED THEN
UPDATE SET
STATUS = 2
OUTPUT Inserted.EmployeeID, Inserted.Name, Inserted.Status;
Можете ли вы дать отзыв о созданном мной SP? Я провел несколько тестов, когда около 500 000 данных читалось адаптером BizTalk WCF-SQL, а затем одновременно записывались еще тысячи данных, и оказалось, что они работают так, как я ожидал.
Хотя решение вроде бы хорошо, но я пока не уверен, как это повлияет на такое решение, может быть, вы тоже можете пролить свет на это?
Также я подумал, возможно ли использовать SQL Server Service Broker из этой статьи. http://blogs.msdn.com/adapters/archive/2008/06/30/using-the-wcf-sql-adapter-to-read-messages-from-ssb-queues-and-submit-them-to-biztalk.aspx
Прямо сейчас я все еще проверяю это и еще не уверен, насколько возможно решить это.
Большое спасибо