"The specified @name (‘B3F7CB60-6636-4F67-93CF-B94C052DFD29’) already exists" while editing a subscription

Consider the following scenario: You have either SQL Server 2000 Reporting Services or SQL Server 2005 Reporting Services set up. You have SSRS configured so that the application pool used by the SSRS virtual directories (Reports and ReportServer) has the identity set up to ... let's say USER1 (this can be the NT AUTHORITY\NETWORK SERVICE, a domain account, or whatever account you want to use with your SSRS Web Applications).

You have reports deployed on your SSRS and you also create some subscriptions for some of your reports. OK. Now these subscriptions are served by underlying SQL Server Agent jobs on the SQL Server instance on which the ReportServer Database is located. Now these jobs have as owner the account used for the SSRS Web Service.

If now, you decide to change the account used by SSRS Web Service and the Identity of the SSRS App Pool now becomes ... let's say USER2 or we change the account used to connect to the ReportServer Database, this is what might happen: When you will try to edit your subscription, to change some parameters, like let's say ... the username and password you use for accessing a file share for a subscription that has a File Share delivery method ... you will get the following error:

"An internal error occurred on the report server. See the error log for more details. (rsInternalError) Get Online Help.

The specified @name (‘B3F7CB60-6636-4F67-93CF-B94C052DFD29’) already exists. " *

 * different GUIDs of course - the GUID is the name of the job that corresponds to the subscription on the SQL Server.

This is happening because the current user that is trying to alter the jobs on the server is not the owner of the jobs. More, if this happens, it means the current user does not have administrative privileges on the SQL Server instance. So we have a couple of options to get out of this one:

 1. Make sure the account used by our SSRS web services is a SYSADMIN on the SQL Server instance on which the ReportServer DB is located, if we use the Service Account to connect to the ReportServer Database or make sure the account specified in the Database Connection is a SYSADMIN (on the SQL Server instance on which the ReportServer DB is located).

2. Change the owner of the existing jobs to reflect the new account used by the SSRS Web Services (Web Service Identity).