Laden...

[gelöst] Applikation mit Entity Framework 6 bricht mit einem SQL Exception ab

Erstellt von Dolce vor 3 Jahren Letzter Beitrag vor 3 Jahren 799 Views
D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 3 Jahren
[gelöst] Applikation mit Entity Framework 6 bricht mit einem SQL Exception ab

Ich habe meine erste Applikation mit EF6 von Grund auf selbst entworfen implementiert und versuche diese nun beim Kunden zum Laufen zu bringen.
Leider bricht die Applikation beim Starten mit einer SQL Exception ab.

Die Anwendung wurde mit dem Ziel Framework 4.5.2 implementiert

Der Rechner hat Windows 10 installiert und die Applikation versucht eine Verbindung zum SQL Server (2008 Version) aufzubauen. Ist evtl. der SQL Server zu alt?
Alle Angaben in der Connection sind richtig, und auch die Datenbank ist inkl. der __MigrationHistory genau gleich wie auf meiner Entwicklungsumgebung.

Muss trotzdem im OS enthaltenen .Net Framework, die "Entity Framework Runtime" & ggf. die "Entiity Framework Tools" auf jedem Rechner nachinstalliert werden?

Fehlermeldung:
Anwendung: xy.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.Data.SqlClient.SqlException
bei System.Data.SqlClient.SqlConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action1&lt;System.Action&gt;) bei System.Data.SqlClient.SqlInternalConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action1<System.Action>)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(System.Data.SqlClient.TdsParserStateObject, Boolean, Boolean)
bei System.Data.SqlClient.TdsParser.TryRun(System.Data.SqlClient.RunBehavior, System.Data.SqlClient.SqlCommand, System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.BulkCopySimpleResultSet, System.Data.SqlClient.TdsParserStateObject, Boolean ByRef)
bei System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
bei System.Data.SqlClient.SqlDataReader.get_MetaData()
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.RunBehavior, System.String, Boolean, Boolean, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, Boolean, Int32, System.Threading.Tasks.Task ByRef, Boolean, Boolean, System.Data.SqlClient.SqlDataReader, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String, System.Threading.Tasks.TaskCompletionSource1&lt;System.Object&gt;, Int32, System.Threading.Tasks.Task ByRef, Boolean ByRef, Boolean, Boolean) bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteReader(System.Data.CommandBehavior, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(System.Data.CommandBehavior) bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior) bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher+&lt;&gt;c.&lt;Reader&gt;b__6_0(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext1<System.Data.Common.DbDataReader>)
bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Dispatch[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.__Canon, System.Func3<System.__Canon,System.__Canon,System.__Canon>, System.__Canon, System.Action3&lt;System.__Canon,System.__Canon,System.__Canon&gt;, System.Action3<System.__Canon,System.__Canon,System.__Canon>)
bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext)
bei System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(System.Data.CommandBehavior)
bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior)
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)

Ausnahmeinformationen: System.Data.Entity.Core.EntityCommandExecutionException
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)
bei System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Data.Entity.Core.Objects.ObjectContext, System.Data.Entity.Core.Objects.ObjectParameterCollection)
bei System.Data.Entity.Core.Objects.ObjectQuery1+&lt;&gt;c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].&lt;GetResults&gt;b__1() bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func1<System.__Canon>, System.Data.Entity.Infrastructure.IDbExecutionStrategy, Boolean, Boolean)
bei System.Data.Entity.Core.Objects.ObjectQuery1+&lt;&gt;c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].&lt;GetResults&gt;b__0() bei System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func1<System.__Canon>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].GetResults(System.Nullable1<System.Data.Entity.Core.Objects.MergeOption>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].&lt;System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator&gt;b__31_0() bei System.Data.Entity.Internal.LazyEnumerator1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
bei System.Linq.Enumerable+WhereSelectEnumerableIterator2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext() bei System.Linq.Enumerable.Count[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable1<System.__Canon>)
bei AenderungswesenUserVerwaltung.UserAdministration..ctor()
bei AenderungswesenUserVerwaltung.Program.Main()

Über einen Tipp oder Link wäre ich sehr froh...

Beste Grüße Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

H
48 Beiträge seit 2020
vor 3 Jahren

eine entity framework oder entity framework tools runtime gibt es nicht die abhängigkeiten werden mit dlls ausgeliefert

4.931 Beiträge seit 2008
vor 3 Jahren

Du solltest die Exception (in UserAdministration..ctor()) mal abfangen und dessen Message ausgeben bzw. loggen lassen.

Edit:
Ich benutze zum Loggen von Exceptions häufig diese Hilfsmethode, um auch alle InnerException.Message-Texte zu erhalten:


public static string CreateExceptionText(Exception e, string title = null)
{
	var str = new StringBuilder(64);

	if (title != null)
		str.AppendLine(title);

	while (e != null)
	{
		str.AppendLine(e.Message);
		e = e.InnerException;
	}

	return str.ToString();
}

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 3 Jahren

Vielen dank Th69

Ich erweitere meine Applikation um die erweiterte Logger Funktion. Dann werde ich morgen sehen, ob beim Kunden weitere wertvolle Informationen geloggt werden.

Es ist immer Käse, wenn Applikationen beim Entwickler laufen, aber beim Kunden nicht starten wollen...

Gruß Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 3 Jahren

Leider hat meine Erweiterung zu keinem Ergebnis geführt. Da die Applikation nicht gestartet werden kann, werden auch keine Logdateien erzeugt.
Ebenfalls habe ich dem ganzen Applikationsorder beim Kunden die Rechte für den Benutzer "Jeder" auf Vollzugriff gesetzt.

Könnten die Fehlermeldungen auf fehlende dll's hindeuten?

Folgende Fehlermeldungen werden in das Event-Log geschrieben:> Fehlermeldung:

Name der fehlerhaften Anwendung: AenderungswesenUserVerwaltung.exe, Version: 1.0.0.0, Zeitstempel: 0x9fc4e8b6
Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 10.0.19041.572, Zeitstempel: 0x979ddb1d
Ausnahmecode: 0xe0434352
Fehleroffset: 0x00129ab2
ID des fehlerhaften Prozesses: 0x2558
Startzeit der fehlerhaften Anwendung: 0x01d6c3e3fb0f042a
Pfad der fehlerhaften Anwendung: C:\AenderungswesenUserVerwaltung.exe
Pfad des fehlerhaften Moduls: C:\Windows\System32\KERNELBASE.dll
Berichtskennung: 3d1ba573-d2bb-4f2c-9876-db0ec01bc472
Vollständiger Name des fehlerhaften Pakets:
Anwendungs-ID, die relativ zum fehlerhaften Paket ist:

Fehlermeldung:
Anwendung: AenderungswesenUserVerwaltung.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.Data.SqlClient.SqlException
bei System.Data.SqlClient.SqlConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action1&lt;System.Action&gt;) bei System.Data.SqlClient.SqlInternalConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action1<System.Action>)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(System.Data.SqlClient.TdsParserStateObject, Boolean, Boolean)
bei System.Data.SqlClient.TdsParser.TryRun(System.Data.SqlClient.RunBehavior, System.Data.SqlClient.SqlCommand, System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.BulkCopySimpleResultSet, System.Data.SqlClient.TdsParserStateObject, Boolean ByRef)
bei System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
bei System.Data.SqlClient.SqlDataReader.get_MetaData()
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.RunBehavior, System.String, Boolean, Boolean, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, Boolean, Int32, System.Threading.Tasks.Task ByRef, Boolean, Boolean, System.Data.SqlClient.SqlDataReader, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String, System.Threading.Tasks.TaskCompletionSource1&lt;System.Object&gt;, Int32, System.Threading.Tasks.Task ByRef, Boolean ByRef, Boolean, Boolean) bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteReader(System.Data.CommandBehavior, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(System.Data.CommandBehavior) bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior) bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher+&lt;&gt;c.&lt;Reader&gt;b__6_0(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext1<System.Data.Common.DbDataReader>)
bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Dispatch[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.__Canon, System.Func3<System.__Canon,System.__Canon,System.__Canon>, System.__Canon, System.Action3&lt;System.__Canon,System.__Canon,System.__Canon&gt;, System.Action3<System.__Canon,System.__Canon,System.__Canon>)
bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext)
bei System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(System.Data.CommandBehavior)
bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior)
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)

Ausnahmeinformationen: System.Data.Entity.Core.EntityCommandExecutionException
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)
bei System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Data.Entity.Core.Objects.ObjectContext, System.Data.Entity.Core.Objects.ObjectParameterCollection)
bei System.Data.Entity.Core.Objects.ObjectQuery1+&lt;&gt;c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].&lt;GetResults&gt;b__1() bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func1<System.__Canon>, System.Data.Entity.Infrastructure.IDbExecutionStrategy, Boolean, Boolean)
bei System.Data.Entity.Core.Objects.ObjectQuery1+&lt;&gt;c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].&lt;GetResults&gt;b__0() bei System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func1<System.__Canon>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].GetResults(System.Nullable1<System.Data.Entity.Core.Objects.MergeOption>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].&lt;System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator&gt;b__31_0() bei System.Data.Entity.Internal.LazyEnumerator1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
bei System.Linq.Enumerable+WhereSelectEnumerableIterator2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext() bei System.Linq.Enumerable.Count[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable1<System.__Canon>)
bei AenderungswesenUserVerwaltung.UserAdministration..ctor()
bei AenderungswesenUserVerwaltung.Program.Main()

Wer Rechtschreibfehler findet, darf sie behalten.

16.806 Beiträge seit 2008
vor 3 Jahren

Es ist immer Käse, wenn Applikationen beim Entwickler laufen, aber beim Kunden nicht starten wollen...

Man das auch so ausdrücken:

Es ist immer Käse, wenn Entwickler im Jahr 2020 immer noch Logging-Mechanismen nicht oder falsch implementieren, sodass kein Mensch erkennen kann, was auf einem Nicht-Dev-System falsch läuft 😉
Sql-Exceptions vermeidet man übrigens vor Auslieferung, indem man Integrationstests fährt.

Seit über 10 Jahren gibts den "Standard" des Full Structured Loggings und seit über 6 Jahren die Implementierung von Serilog für die .NET Welt.
Wer da immer noch nicht richtig loggt, der hat das entsprechend auch verdient 😉

Aber zum Problem:
Eine System.Data.Entity.Core.EntityCommandExecutionException hat immer eine Exception-Message; hier System.Data.SqlClient.SqlException.

Eine System.Data.SqlClient.SqlException hat immer eine Exception-Message, zB. "invalid column name".
Da diese Message in Deinem Beitrag fehlt kann Dir hier auch keiner beantworten, was der Exception-Grund ist.
Wahrscheinlich kannst Du das Problem auch selbst beheben, wenn Du die Message liest (wofür Du sie natürlich loggen musst) 😉

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 3 Jahren

Ich will euch nicht vorenthalten, was der Grund war.

Der Grund war, das mein Projekt korrupt war. Ich bin heute darüber gestolpert, als ich eine setup.exe für diese Applikation erstellen wollte. Da gab es ordentlich viele Fehlermeldungen, das gewisse dll's nicht in das Zielverzeichnis kopiert werden können da nicht vorhanden.
Nun, die dll's waren im Source Verzeichnis alle vorhanden.

Also habe ich pragmatisch ein neues Projekt angelegt und step-by-step alle Komponenten vom alten Projekt in das neue Projekt kopiert.

Anschließend konnte eine setup.exe erzeugt werden, welche beim Kunden auch zum gewünschten Ergebnis geführt hat.

Für eure Unterstützung bedanke ich mich recht herzlich

Wer Rechtschreibfehler findet, darf sie behalten.

16.806 Beiträge seit 2008
vor 3 Jahren

Versteh ich das richtig, dass Du lokal das Setup für den Kunden erzeugst und nicht über ein Buildsystem?
Dann solltest das mal in Angriff nehmen 😃

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 3 Jahren

Auf jeden Fall, nur man kann nicht alles auf einmal machen. 😃

Wer Rechtschreibfehler findet, darf sie behalten.