2016-06-10 5 views
0

저는 새로운 Junior SQL Developer입니다. Report Manager에있는 여러 보고서를 상속 받았습니다. 그들 중 일부는 서브 스크립 션을 설정 한 것으로 보이지만 유효하지 않은 이메일 주소가 포함되어 있습니다.Report Manager 보고서 구독의 전자 메일 주소 찾기 및 변경

보고서를 클릭하고 관리, 구독 등으로 이동하여 보고서 관리자와 구독을 한 번에 하나씩 수정할 수 있음을 알고 있습니다. 그러나 이것은 시간과 노력의 엄청난 낭비와 같으며 미래를위한 매우 견고한 솔루션을 제공하지 않습니다.

나는 더 많은 것을 이해하는 데 시간을 많이 쏟을 것입니다. SSMS의 모든 Report Manager 보고서 구독에 액세스 할 수있는 방법이 있습니까? 전자 메일 주소가 지금은 하드 코딩되어 있는지 확인한 다음 HR 데이터베이스에서 직원 전자 메일 목록에서 선택하도록 수정하고 싶습니다. 그렇게하면 나중에 이메일이 변경되거나 모든 구독에서 한 명을 삭제하려는 경우 시간이 많이 걸리지 않습니다.

또한 누구나 Report Manager와 함께 제공되는 어리석은 작업 명명 규칙을 피하는 방법을 알고 있습니까? "3AC1BB6F-D782-46DD-99F5-CCA1E6257091"보고서가 묶여있는 것이 무엇인지 모르겠지만 "ReportName + Microsoft'sTypicalBSNamingCovention"와 같은 기본값으로 수정 될 수 있다면 괜찮을 것이며 일부는 감각.

나는 그것이 의미가 있기를 바랍니다. 경험과 지식을 나에게 알려 주신 모든 분들께 미리 감사드립니다. : ^)

답변

3

Report Server 데이터베이스의 위치를 ​​알고 있다고 가정 할 때 구독 정보를 볼 수있는 쿼리입니다.

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 '%[email protected]%' -- 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 '%[email protected]%' 

주의해서 업데이트를 사용하면 수동으로 구독을 다시 작성할 수 있습니다.

Report Manager에서 만든 구독 작업을 복잡하게 만들지 마십시오. 특정 구독에 대한 작업을 찾으려면 각 구독에 다소 독특한 일정이 있는지 확인하십시오. 마지막 실행 날짜로 작업 목록을 정렬하여 구독이 마지막으로 실행 된 시간을 찾으십시오. 마우스 오른쪽 버튼을 클릭하여 실행하십시오. 어쨌든 그건 저에게 충분합니다.