Для начала, вам, вероятно, не нужно делать этот тип подзапроса внутри любого запроса, который вы делаете. В таблице INSERTED есть только строки, которые были обновлены (или вставлены, но мы можем предположить, что это триггер UPDATE, основанный на комментарии в вашем коде). Таким образом, вы можете либо INNER JOIN, и вы будете сопоставлять только строки в таблице с псевдонимом «R», или вы можете LEFT JOIN, и вы можете сказать, какие строки в R были обновлены, поскольку те, которые показывают NULL для всех столбцов, не были обновлены.
Вопрос 1) Как сказано ниже marc_s, триггер выполняется в контексте базы данных. Но это выходит за рамки этого. ВСЕ код, связанный с базой данных, включая SQLCLR, выполняется в базе данных. Здесь нет клиентской стороны. Это проблема, которая возникает у большинства людей с SQLCLR: он работает внутри контекста SQL Server. Что касается желания вызывать хранимый процесс из триггера: это можно сделать, НО таблицы INSERTED и DELETED существуют только в контексте самого триггера.
Вопрос 2) Похоже, что этот вопрос должен был начаться со слов «Также ВЫБРАТЬ». Здесь нужно учитывать две вещи. Во-первых, при проверке значений «Состояние» (или любых значений «Уточняющий запрос»), поскольку это не отображается для пользователя, следует использовать числовые значения. «Статус» «Включен» должен быть примерно таким, как «1», так что язык не имеет значения. Дополнительным преимуществом является то, что значения Status не только сохраняются, так как числа занимают намного меньше места, но и сравниваются намного быстрее. Во-вторых, любой текст, который должен отображаться пользователю, который должен быть чувствителен к языковым различиям, должен находиться в таблице, чтобы вы могли передать LanguageId или LocaleId, чтобы получить соответствующие строки для французского, немецкого и т. Д. Для отображения. Вы можете установить LocaleId пользователя или системы в целом в другой таблице.
Вопрос 3) Если под «регистрацией» вы имеете в виду, что сборка либо СОЗДАНА, либо УДАЛЕНА, вы можете перехватить эти события с помощью триггеров DDL. Вы можете посмотреть здесь некоторые основы:
http://msdn.microsoft.com/en-us/library/ms175941(v=SQL.90).aspx
Но CREATE ASSEMBLY и DROP ASSEMBLY - это события, которые можно отследить.
Если вы говорите о том, когда сборки загружаются и выгружаются из памяти, то я не знаю, как это перехватить.