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