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.
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
Vous devez vous connecter pour publier un commentaire.
Dans le constructeur de la Configuration.cs de la classe (dans la migration de Dossier) ajout de la propriété CommandTimeout = Int32.MaxValue;
Est le CommandTimeout dans la deuxième ou de la milliseconde?
C'est en seconde. docs.microsoft.com/en-us/dotnet/api/...
OriginalL'auteur Stephan
J'ai redémarré le service SQL Server (Win7 - Gestion de l'Ordinateur > les Services et les Applications > les Services)
cela a fonctionné pour moi!
OriginalL'auteur tennisBoy
Pour moi, le problème est que le script de migration a pris beaucoup de temps (15 minutes).
C'est la façon dont j'ai travaillé autour de la question:
1. Exécuter
update-database -script
(-force
peut être nécessaire)2. Copiez ce script SQL de sortie et exécuter dans SQL Server Management Studio
OriginalL'auteur Josh
J'ai couru dans mon environnement de production, car elle produit des requêtes comme celles ici: Pourquoi ne Entity Framework 6 générer des complexes des requêtes SQL pour de simples recherches?
C'est en fait lié à un bug dans cette version de EF: https://entityframework.codeplex.com/workitem/2083
Ils ont changé la valeur par défaut null sémantique de 5 à 6 donc je suppose que vous avez eu le même problème je l'ai fait après la mise à niveau. Ma machine a une fraction de la donnée de mon installation à distance et jusqu'à ce que je suis à la production, je ne savais pas que j'avais un problème de performance. Les requêtes va souvent produire une analyse de table qui aura du temps pour les grandes tables.
De le modifier pour qu'il fonctionne comme EF5 vous devez définir:
DbContextConfiguration.UseDatabaseNullSemantics = true
Voir ici: http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbcontextconfiguration.usedatabasenullsemantics(v=vs. 113).aspx
Le bug a été corrigé en EF 6.1, mais vous devez définir l'option ci-dessus pour obtenir de simples où les conditions.
OriginalL'auteur GrokSrc
Je viens d'avoir exactement le même problème, je sais que ce fil est d'un an mais peut-être que ça aidera quelqu'un d'autre.
J'ai essayé de créer la base de données au sein de l'entité 5 en utilisant le Gestionnaire de paquets de la Console à l'aide de la chaîne de connexion ci-dessous.
mise à jour de la base de données -ConfigurationTypeName Mon.Projet.EF.Les Migrations.Configuration -ConnectionStringName MyDatabaseDev -ProjectName Projet.Nom -StartUpProjectName Base De Données.Nom
Chaque fois que j'ai couru, j'ai eu l'erreur ci-dessous.
Délai d'attente expiré. Le délai écoulé avant la fin de l'opération ou le serveur ne répond pas.
Pour le fixer j'ai simplement ajouté le -force paramètre et il est passé à travers.
CommandTimeout = Int32.MaxValue;
Que le changement a permis la mise à jour de la base de données de commande pour enfin terminer sans erreur.ne fonctionne pas pour moi non plus, votre CommandTimeout paramètre a parfaitement fonctionné. Merci, digne de commentaire.
OriginalL'auteur Craig Strohl