Error initializing database on server in Asp Net Mvc!

1

I have a finished application developed in C # using Asp Net MVC. On my local server the application connects to the database that is on the server of the company that works, so when placing the application to run in the Host Network provider is not able to initialize the database, it gives an error displaying the following message: An error occurred while executing the command definition. See the inner exception for details.

It recovers the backup everything ok, so it does not initialize the database, here is the part of the code that I configure all this part, remembering that the credentials erased leaving everything empty:

public NFeWebContext()
            : base($"Data Source=;Initial Catalog=BD{HttpContext.Current.User.Identity.Name};Persist Security Info=True;User ID =;Password=;MultipleActiveResultSets=True;App=EntityFramework providerName=System.Data.SqlClient")
        {
            //$"Data Source=;Initial Catalog=b;Integrated Security=True; User ID = ;Password=; MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"
            //$"Data Source=;Initial Catalog=BD{HttpContext.Current.User.Identity.Name};Persist Security Info=True;User ID =;Password=;MultipleActiveResultSets=True;App=EntityFramework providerName=System.Data.SqlClient"
            SqlConnection cnn = new SqlConnection($"Data Source=;Initial Catalog=MASTER;Persist Security Info=True;User ID =;Password=;MultipleActiveResultSets=True;App=EntityFramework providerName=System.Data.SqlClient");
            cnn.Open();

            if (!System.Data.Entity.Database.Exists($"Data Source=;Initial Catalog=BD{HttpContext.Current.User.Identity.Name};Persist Security Info=True;User ID =;Password=;MultipleActiveResultSets=True;App=EntityFramework providerName=System.Data.SqlClient"))
            {
                SqlCommand cmdRestore = new SqlCommand();
                cmdRestore.Connection = cnn;

                cmdRestore.CommandText = $@"USE MASTER;
                                              RESTORE DATABASE [BD{HttpContext.Current.User.Identity.Name}] 
                                              FROM DISK = 'DIRETORIO DO BACKUP'
                                              WITH                                        
                                              Move 'BD' TO 'DIRETORIO DO BACKUP', 
                                              Move 'BD_log' TO 'DIRETORIO DO BACKUP',
                                              Replace, RECOVERY";
                cmdRestore.ExecuteNonQuery();
                cnn.Close();
                //  bdcliente.Open();
            }
        }

And here is the error that the inner exception displays:

System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception: The wait operation timed out --- End of inner exception 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.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__c(DbCommand t, DbCommandInterceptionContext'1 c) at System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func'3 operation, TInterceptionContext interceptionContext, Action'3 executing, Action'3 executed) at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext) at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) --- End of inner exception stack trace --- at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues) at System.Data.Entity.Core.Objects.ObjectQuery'1.<>c__DisplayClass7.<GetResults>b__6() at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func'1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery'1.<>c__DisplayClass7.<GetResults>b__5() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation) at System.Data.Entity.Core.Objects.ObjectQuery'1.GetResults(Nullable'1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery'1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() at System.Data.Entity.Internal.LazyEnumerator'1.MoveNext() at System.Collections.Generic.List'1..ctor(IEnumerable'1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable'1 source) at
    
asked by anonymous 16.05.2018 / 20:44

1 answer

1

By error: "The timeout period elapsed prior to completion of the operation or the server is not responding...."

This is a query / command that takes more time to execute than expected and analyzing your SQL the command being used is a database restore.

Then the execution of this operation is likely to be expensive and time-consuming.

An alternative would be to increase the limit on your connection, eg:

 cmdRestore.CommandTimeout = 300;
    
16.05.2018 / 23:17