Разрешения, необходимые для доступа к удаленным счетчикам perfmon из SQL CLR - PullRequest
0 голосов
/ 27 января 2012

Итак, я пытаюсь изучить SQLCLR и решил написать табличную функцию, которая, по сути, собирает некоторые счетчики perfmon.Я могу запустить его успешно и собрать счетчики с сервера, на котором размещен экземпляр базы данных.Однако, когда я пытаюсь получить доступ к счетчикам на другом сервере, я получаю «доступ запрещен».Я могу заставить его работать, если я добавляю учетную запись, которая запускает SQL Server, в группу «Пользователи системного монитора» на удаленном сервере, но я хочу знать, могу ли я запустить функцию как другая учетная запись Windows?То есть можно ли создать учетную запись Windows специально для этой задачи и каким-то образом SQL Server запустить функцию в этом контексте?

1 Ответ

1 голос
/ 27 января 2012

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

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

И, наконец, запрос счетчиков производительности из C # API неэффективен. Вы быстро обнаружите, что существует гораздо более быстрый API, библиотека PDH . Но PDH не имеет аналога управления, поэтому вы вернетесь на круги своя, а именно используйте инструмент, который использует для использования PDH "из коробки": logman.exe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...