EF Premier Code Délai d'attente expiré. Le délai écoulé avant la fin

Excuses pour cette étrangement libellé de la question. Je ne sais pas quel est le véritable problème, mais j'espère que quelqu'un peut me donner quelques pistes de réflexion.

J'obtiens l'erreur suivante lorsque vous tentez d'exécuter les migrations:

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out

Il est intéressant de noter que sur mon portable ce n'est pas le cas, mais sur ma VM (azure - grand) ce qui se passe avec 100% de taux d'échec.

Je suis en utilisant Ef 6.0.0 -rc1. Veuillez noter que la mise à jour de l'EF n'est pas une option. Si la mise à jour à EF 6.0.0 ou 6.0.1 j'obtiens l'erreur suivante avec 100% de taux d'échec:

Les erreurs pendant le Premier Code, ajoutez-la migration

J'ai également chronométré l'erreur. Il faut environ 1,5 min pour déclencher l'erreur. Lors de l'exécution avec -Verbose drapeau qu'il était en train de créer de 200 tableaux avec les index. La copie de la requête sql et excuting dans SSMS prend 5 secondes.

Quelques choses que j'ai fatigué, mais ne fonctionne pas:

1) la mise en ObjectContext.CommandTimeout = 36000 //10 hours! comme indiqué ici:

https://stackoverflow.com/a/6234593/305469

2) Paramètre de délai d'attente dans la chaîne de connexion dans le web".config":


connectionString="Data Source=localhost;Initial Catalog=myDB;Integrated Security=SSPI;Connection Timeout=36000"

3) Réglage de la machine.config" transaction maxTimeout:


<system.transactions>
<machineSettings maxTimeout="00:00:00" />
</system.transactions>

4) Réglage de la distance "délai d'attente de requête" sur sql server

USE MyDB;
GO
EXEC sp_configure 'remote query timeout', 0 ;
GO
RECONFIGURE ;
GO

Donc ce qui se passe? Comment se fait - CommandTimeout n'est pas respecté? Des suggestions?

Plein de trace comme suit:

System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
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.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TInterceptionContext,TResult](Func`1 operation, TInterceptionContext interceptionContext, Action`1 executing, Action`1 executed)
at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection)
at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32.<ExecuteStatements>b__2e()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, IEnumerable`1 systemOperations, Boolean downgrading, Boolean auto)
at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
ClientConnectionId:8cbbc70c-8182-417e-9aca-4603f797340d
Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
Pouvez-vous ajouter stacktrace?
Une chose est sûre @DenPakizh, j'ai ajouté le stacktrace à la question.
1) à Partir de stacktrace ressemble migrations ne pas utiliser ObjectContext 2) autant que je sache, ce délai est le délai d'attente pour l'établissement d'une connexion pas le délai d'attente assoicated avec l'exécution de la déclaration proprement dite 3,4) Ma conjecture est que EF Code Migrations de jeu de 90 secondes de délai d'attente sur les SQLCommand et c'est ce que des gouverneurs de la quantité de temps que pour un délai d'attente Peut vous exécutez SQL Server profiler pour voir ce que la dernière requête exécutée? Ou utiliser les technet.microsoft.com/en-us/library/ms175518.aspx pour localiser le blocage ?

OriginalL'auteur Chi Chan | 2013-11-11