RMSSUPP KB Article 02: Event ID: 9 - RMS stops issuing certificates - RMS and Blackberry sharing the same SQL instance.

Ahh. The second KB article. Maybe now that there is two of them, they will multiply.

Problem:

If you are using Blackberry Enterprise Systems (BES), and RMS, and both are sharing the same SQL database, you may run into the following issue. 

RMS users are no longer able to get RACs issued from the RMS server.

The following error is in the RMS server application event log.

Event Type: Error
Event Source: RMS
Event Category: Certification
Event ID: 9
Date: X/XX/XXX
Time: XX:XX:XX AM
User: N/A
Computer: RMSSERVER
Description:
A general error occurred. The following information was reported:
System.Data.SqlClient.SqlException: RAISERROR failed due to invalid parameter
substitution(s) for error 60002, severity 5, state 1.
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior,
RunBehavior runBehavior, Boolean returnStream)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at
Microsoft.DigitalRightsManagement.Certification.CertificationGen._GetUser(Identifica
tion identification)
at
Microsoft.DigitalRightsManagement.Certification.CertificationGen._GetUserKeysAndCert
ificateWithQuota(String userName, Identification identification, DateTime
passportAccountCreation, Byte[] machinePublicKeyHash, Boolean persistent,
RsaKeyBlob& userKeys, PersonaCertificate& certificate, QuotaResponse& quota)
at Microsoft.DigitalRightsManagement.Certification.CertificationGen.Certify(String
userName, Identification identification, String machineCertificate, DateTime
passportAccountCreation, Boolean persistent)
at Microsoft.DigitalRightsManagement.Certification.Pipeline.Certify(CertifyParams[]
requestParams, HttpRequest request, IIdentity userIdentity).

Cause:

Blackberry Enterprise apparently uses the same entries in the sysmessages table that RMS does, and will overwrite the entries with their own values.

Solution:

1. On the server running SQL Server that is missing the sysmessages, start Query Analyzer. This is located in the SQL Server program group on the Start Menu.

2. When Query Analyzer is opened, you will see a dialog asking you to log in.
Ensure that the SQL Server: field contains either "."(without the quotes) or the name of the local server. If the SQL Server was installed as a named instance, this field should contain <ServerName>\<InstanceName>. If you are unsure of whether or not SQL Server is a named instance, it most likely is not.

3. For the login, you can choose Windows Authentication if you are using a default installation of SQL Server and are currently logged in to the server as a local administrator. If connecting with Windows Authentication fails, you will need to choose SQL Server authentication and specify a login and password of a valid SQL Server login that is a SQL Server system administrator. The sa login has these rights by default.

4. Once connected to SQL Server, paste the following script into the query window:
exec sp_addmessage 60000, 5, 'Unexpected activation error', 'us_english', false, 'REPLACE'
exec sp_addmessage 60001, 5, 'Bad parameter %s in procedure %s', 'us_english', false, 'REPLACE'
exec sp_addmessage 60002, 5, 'User %s not found', 'us_english', false, 'REPLACE'
exec sp_addmessage 60003, 5, 'Machine quota, %d, for user %d exceeded', 'us_english', false, 'REPLACE'

5. To run the script, either click the Run button (the green play button) or press F5.

6. A lower pane should appear in the window with multiple lines indicating some rows were affected. This indicates that the script ran successfully.

7. Close SQL Server Query Analyzer. The messages are now recreated successfully.

8. You should move either the RMS databases, or the BES databases to a different SQL instance. Eventually BES will overwrite the table again, and the issue will re-occur.

-Jason