Нет, вы не можете запустить функцию SQLCLR от имени определенного пользователя. Возможно, вы слышали об использовании API LogonUser
для олицетворения пользователя в функции SQLCLR, но такой подход мошенничает с проблемами, особенно из-за проблемы хранения пароля. Правильное решение - именно то, что вы сделали, предоставьте учетной записи SQL Server необходимые привилегии, добавив его в требуемую группу безопасности. Кстати, в случае, если ваша функция SQLCLR олицетворяет текущую регистрационную информацию Windows, вам нужно настроить ограниченное делегирование .
При этом использование SQLCLR для подключения к удаленной машине для чего-либо не является разумным решением. Кража ценных SQL Server рабочих , заставляющих их ждать при медленном доступе к сети, приведет к остановке вашего сервера под нагрузкой. Вы можете сделать это как способ узнать, как это сделать, но даже не думайте о его развертывании в производстве. Сделать сбор счетчиков внешним процессом и сохранить счетчик в базе данных. На самом деле, уже есть инструмент, который точно , который: logman.exe
.
И, наконец, запрос счетчиков производительности из C # API неэффективен. Вы быстро обнаружите, что существует гораздо более быстрый API, библиотека PDH . Но PDH не имеет аналога управления, поэтому вы вернетесь на круги своя, а именно используйте инструмент, который использует для использования PDH "из коробки": logman.exe
.