Разработчик: как получить данные отчетов примерно из 20 баз данных? - PullRequest
2 голосов
/ 15 октября 2010

Я младший разработчик в нашей команде.В одном проекте у нас около двадцати баз данных в одном экземпляре SQL Server.У нас есть права db_owner на эти базы данных.

Я собираюсь отслеживать определенные вещи из этих баз данных (например, размер файла).Но поскольку у нас нет прав системного администратора, у нас нет всех этих инструментов управления для этих баз данных.Теперь мое решение заключается в написании «сценариев отчетности» с использованием хранимых процедур.Эти sp широко используют sp_foreachdb.Мой вопрос заключается в том, что это хороший подход к этой проблеме?Какие еще методы / решения там доступны?

Ответы [ 2 ]

0 голосов
/ 18 октября 2010

Похоже, вы пытаетесь придумать техническое решение политической проблемы.Если у вас нет прав для отслеживания того, что вам нужно отслеживать, не будет достаточно хорошего решения.Просто потому, что вы отслеживаете размер файла, недостаточно - вам также нужно знать свободное место на диске, и вы не сможете получить его без дополнительных разрешений.

Я бы спросил у системных администраторов,Вы можете дать им сохраненный процесс, который будет запускаться с разрешениями sysadmin.Они могут просмотреть код, убедиться, что вы ничего не делаете, и затем подписать этот хранимый протокол сертификатом.Они могут предоставить вам права на запуск сохраненного процесса (но не изменять его), даже если вы не в роли системного администратора, и вы получите результаты.

Другой подход - дать им T-Код SQL, который они могут реализовать в виде запланированного задания агента SQL Server, которое отправляет вам результаты.Вы получаете данные, но не права.

Я опасаюсь подхода sp_msforeachdb, потому что, если вы не системный администратор, вы, вероятно, тоже не всегда будете иметь права на каждую базу данных в системе.,Если они реализуют какие-либо сторонние инструменты мониторинга или совместно используют сервер с несколькими отделами, ваш код sp_msforeachdb может дать сбой.

0 голосов
/ 15 октября 2010

Я не уверен, что это немного лучше, но вы могли бы настроить 21 базу данных, в которой есть таблица, которая отслеживает последний раз, когда обновлялась интересная таблица в одной из 20 других баз данных.Если вы также отслеживали эту таблицу в последний раз, когда запускали свой отчет, вы легко могли бы узнать, какие базы данных изменились со времени вашего последнего цикла отчетности.

Не знаете, как обновляются ваши таблицы и можно ли изменить сохраненное обновлениеПроцедура пометить вашу 21-ую базу данных или нет - возможно, триггер вставки / обновления?

...