code it

Martins Tech Blog

Sei nett zu deinem DBA...

... und setz den Application Name im ConnectionString.

Wer schon einmal in die Verlegenheit kam, und prüfen musste, warum es auf einer Datenbank zu Fehlern kommt und welche Anwendung diese erzeugt, der wird froh sein, wenn der Application Name gesetzt war.

Worum geht es?

Beim Verbindungsaufbau zum SQL Server wird nicht nur Benutzername und Kennwort, sondern auch ein Anwendungsname ausgetauscht. Dieser Anwendungsname wird in Tracing-Tools (wie z.B. dem Profiler) auch angezeigt.

Nun ist es für die Fehlersuche sehr sinnvoll, wenn dieser Anwendungsname eindeutig ist.

Leider wird in der Praxis häufig vergessen, diesen zu setzen, was dazu führt, dass hier nur der Standardwert .NET SQLClient Data Provider steht. Das ist für die Problemsuche nicht sehr hilfreich. Mit den neueren Projekt-Templates von Visual Studio, in denen Entity Framework verwendet wird, hat sich dieses Problem nur etwas verlagert. Hier ist der Parameter zwar schon im ConnectionString enthalten, wird aber auf den neuen Standardwert EntityFramework gesetzt - auch nicht sehr hilfreich.

Wie setzt man den ApplicationName?

Im ConnectionString gibt es den Parameter Application Name oder die gleichbedeutende Abkürzung App. Dieser muss gesetzt werden. 

Beispiele:

<connectionStrings>
    <add name="MyEntities" connectionString="metadata=res://*/Models.MyModel.csdl|res://*/Models.MyModel.ssdl|res://*/Models.MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=MyDb;integrated security=True;MultipleActiveResultSets=True;App=Meine Anwendung"" providerName="System.Data.EntityClient" />
</connectionStrings>
<connectionStrings>
    <add name="DefaultConnection" connectionString="Server=.;Database=MyDb;Integrated Security=SSPI;Application Name=Meine Anwendung;" providerName="System.Data.SqlClient" />
</connectionStrings>

Das geht sowohl in klassischen ConnectionStrings als auch in Connectionstrings für das Entity Framework.