Announcements
I am supporting a customer on GP 2013R2 who also had MR 2012 installed when they upgraded to 2013 two years ago. They are on MR 2.1.10001.112
I don't have a lot of experience with MR2012 beyond light configuration, and I understand all the concepts, however, I did not perform this installation or MR. Recently the customer added about 6 companies to the Data Mart and began receiving errors like:
Reader returned fewer objects for processing (0) than expected (1).
I saw this could be related to a SQL bottleneck and generally the error can be ignored, but they were getting them frequently. There are no performance bottlenecks on the SQL Server, plenty of resources available.
I investigated the MR environment more deeply because I feel like i am going to be asked to support it going forward. I noticed two things about MR that I need a read on as to whether or not they are issues:
1. The DataMart database name is MRDM.
However, sometimes when services get re-started the following error is thrown
Cannot open database "ManagementReporterDM" requested by the login. The login failed.
Login failed for user 'sa'.
--- Exception Dump ---
Caught Exception: [System.Data.SqlClient.SqlException] Cannot open database "ManagementReporterDM" requested by the login. The login failed.
Login failed for user 'sa'.
Stack trace:
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.Dynamics.Integration.Adapters.DimensionalDataMart.DataMartAdapter.GetDatabases()
User: XXXX\MRService
Machine: XXXXX-SQL12
Its like there is something in the configuration somewhere that thinks the DataMart database is named ManagementReporterDM. In spite of this odd error, it seems to be working in general
2., TRACE 2371 and TRACE 610
I have not looked this deeply into MR until now, so I don't know if it is standard and acceptable that TRACE 2371 and 610 are on for MRDM and the Event Logs report every minute that these flags are on. I know they do with Update Statistics and Bulk Loading, but should they be on ALL THE TIME for MR? if I stop the MR services, these Events go away and then return as soon as I start the services again. I do have a SQL background, so I think I understand what is going on but I don't know as far as MR is concerned if this is normal or not.
Lastly, should I patch this to the latest CU?
Thank you in advance for your consideration and assistance
*This post is locked for comments
Hi Devin,
Whoever did the initial implementation, it was not a good idea to change the default name of the Database for the DM.. Apparently that name is hard-coded somewhere, as I recently installed a fresh new MR 2012 CU15 system and was _not_ using the DM connector, but only the Legacy connector.
Guess what, after the initial setup and company configuration steps, I checked the MR console logs and got all of a surprise :
Cannot open database "ManagementReporterDM" requested by the login. The login failed.
Login failed for user 'FTI\xxxxxxx'. Cannot open database "ManagementReporterDM" requested by the login. The login failed.
Login failed for user 'FTI\xxxxxxx'.
Component: Microsoft.Dynamics.Integration.Common.TraceLog
User: FTI\xxxxxxx
Machine: NEWMRGPSRV
Despite the error message in the service log, my MR 2012 is working perfectly, but I don't use the DM.
I'd suggest that you scrap the DM database and rebuild it from scratch.. there are plenty of blog & forums posts out there to know how to do it. The DM database doesn't carry any vital information.. it's just a warehouse to store your financial data from the GP companies. It was created with the process speed improvement in mind, but actually never really achieved it's goal. To me, the Legacy connector stays and remains the most reliable one, out of the 2 choices.. And it doesn't impact the performance of your MR server that much.
OK - I have updated to CU 15 and I still get the errors related to it looking for a database that does not exist.
Hi Devin,
Looks like your MR setup is a few releases behind... You're currently on CU10 and CU14 was released a few weeks back now.. resolving many issues that users had with past releases.
The traffic you see on the event viewer about SQL is normal behavior (though not necessarily good).. Have a look at this blog post about the refresh cycle in MR 2012 :
dyngpbeat.wordpress.com/.../the-dreadful-1-minute-refresh-cycle-of-mr2012-datamart
André Arnaud de Cal...
294,000
Super User 2025 Season 1
Martin Dráb
232,850
Most Valuable Professional
nmaenpaa
101,158
Moderator