2010-12-13 3 views
2

Я пытаюсь создать пользовательскую функцию CLR для SQL Server, которая подключается к сторонней службе (размещенной на том же сервере, что и экземпляр SQL Server). Есть ли способ заставить WCF назвать TCP или TCP работать в этой ситуации? Есть ли лучший способ сделать это, если я предоставляю посредническую услугу?Interprocess communication from SQL Server Project

ответ

4

Не выполняйте IPC в SQLCLR. Сервер CLR, на котором размещен SQL Server, использует SQL threading primitives, и вы в конечном итоге будете голодать рабочие потоки и планировщики SQL.

Выполняйте все свои IPC из процесса вне SQL Server. Если вам необходимо связаться с этим процессом из SQL-заданий (из хранимых процедур и триггеров), используйте в очереди баз данных либо по Tables as Queues, либо по Service Broker.

+0

Почему IPC будет хуже, чем любое другое использование SQLCLR? – Eclipse

+0

Потому что он делает блок текущего процесса (sqlservr.exe) ожидающим другого ответа процесса. Поскольку SQL - это совместная многопоточная среда пользовательского режима, эти внешние блоки останавливают всю обработку SQL. –

+0

Итак, это вопрос количества времени, которое занимает IPC? – Eclipse