Найдите и измените адреса электронной почты для подписки на отчет диспетчера отчетов
Я новенький младший разработчик SQL. Я унаследовал несколько отчетов, которые находятся в диспетчере отчетов. У некоторых из них, кажется, настроены подписки, но они содержат недействительные адреса электронной почты.
Я понимаю, что могу изменять каждый из этих отчетов и их подписки по одному с помощью диспетчера отчетов, щелкая отчет, выбирая Управление, Подписки и т. Д.; тем не менее, это кажется огромной тратой времени и усилий и не дает очень надежного решения на будущее.
Я бы предпочел потратить время на то, что имеет больше смысла. Есть ли какой-нибудь способ получить доступ ко всем моим подпискам на отчеты диспетчера отчетов из SSMS? Я хотел бы видеть, какие адреса электронной почты они жестко запрограммированы прямо сейчас, а затем изменить их, чтобы выбрать из списка электронных писем сотрудников в нашей базе данных персонала. Таким образом, если электронное письмо изменится позже, или если мы хотим удалить одного человека из ВСЕХ подписок, это не займет уйму времени.
Кроме того, кто-нибудь знает, как избежать нелепых соглашений об именах заданий, которые, кажется, приходят с диспетчером отчетов? Я не знаю, с чем связан отчет "3AC1BB6F-D782-46DD-99F5-CCA1E6257091", но если его можно изменить по умолчанию на что-то вроде "ReportName+Microsoft'sTypicalBSNamingCovention", это будет хорошо и приведет к некоторым смысл.
Я надеюсь, что в этом есть смысл. Заранее благодарю всех за то, что поделились со мной своим опытом и знаниями.:^)
1 ответ
Вот запрос, который позволит вам просматривать подписки, если вы, конечно, знаете, где находится база данных сервера отчетов.
SELECT A.SubscriptionID, A.Report_OID, B.Name,
Path, A.LastRunTime, A.Description, C.UserName AS Owner, A.LastStatus, A.ExtensionSettings
FROM Subscriptions A INNER JOIN Catalog B
ON A.Report_OID = B.ItemID
INNER JOIN Users C
ON A.OwnerID = C.UserID
WHERE A.ExtensionSettings LIKE '%name@domain.com%' -- this can be more than an email, like a paramater value
ORDER BY A.LastRunTime DESC
Это запрос, который вы можете использовать для обновления подписки.
UPDATE Subscriptions SET
ExtensionSettings = REPLACE(CAST(ExtensionSettings AS nvarchar(max)), 'name', 'new_name')
WHERE ExtensionSettings LIKE '%name@domain.com%'
Используйте обновление осторожно, иначе вы можете восстановить подписки вручную.
Не связывайтесь с заданиями подписки, созданными диспетчером отчетов. Если вам нужно найти задание для определенной подписки, просто постарайтесь убедиться, что каждая подписка имеет несколько уникальный график. Сортируйте список заданий по дате последнего запуска, чтобы определить, когда последний раз выполнялась подписка. Щелкните правой кнопкой мыши, чтобы запустить. Во всяком случае, для меня это работает достаточно хорошо.