2013-08-13 1 views
1

SQL Server 2008 R2 поддерживает интеграцию CLR, где .NET-модуль может быть зарегистрирован в базе данных и может быть вызван с помощью хранимых процедур, функций, триггеров SQL. Мы можем разрабатывать такие .NET-модули и интегрироваться с SQL Server.Перехват запроса SELECT и вызов зарегистрированного .NET-модуля

Но у нас есть другое требование, когда требуется перехватить запросы SELECT на SQL Server (с любого SQL-клиента) и вызывать модуль .NET и передавать ему параметры запроса (предложение WHERE).

Например, если у нас есть таблица (VarInfo) в базе данных с двумя столбцами VarID (строка) и Value (float). Теперь предположим, что таблица содержит записи для 100 переменных с VarID: от V001 до V100. Но столбец «Значение» пуст для всех записей. Данные значения не сохраняются в базе данных. Если у нас есть SQL запрос на выборку:

SELECT Value from VarInfo where VarID = 'V001' 

то SQL Server должен вызвать модуль .NET и передать VarID. Модуль .NET должен извлекать переменную Value из некоторого внешнего источника. Затем он возвращает значение обратно в SQL Server. SQL Server должен вернуть это значение в качестве результата запроса/результата.

Просьба сообщить о возможности выполнения вышеуказанного в SQL Server 2008 R2.

Спасибо,

+0

не представляется возможным в все, если вы буквально хотите, чтобы клиент мог отправить 'SELECT Value из VarInfo, где VarID = 'V001''. –

+0

Я бы предложил сохранить значение в базе данных. Я боюсь, что такие дизайнерские варианты, которые вызывают такие интересные вопросы, и много головной боли. –

ответ

1

Ближайший вы могли бы получить будет CLR User-Defined Function - но вызывающий код должен быть в курсе, что это UDF и передать параметры немного по-разному, например:

SELECT Value FROM dbo.CLRUDF('V001') 
Смежные вопросы