4 Stimmen

Was sind die Grenzen einer CLR-Kontextverbindung?

Ich versuche, einige vorhandene C#-Code in eine CLR gespeicherte Prozedur zu konvertieren. Die offensichtliche Verbindungszeichenfolge zu verwenden ist eine Kontextverbindung ("Kontextverbindung = true").

Das Problem, auf das ich stoße, ist, dass einige Dinge bei diesem Verbindungstyp offenbar nicht funktionieren. Die neueste Sache ist die SqlConnection.GetSchema-Methode schlägt fehl. Die Fehlermeldung besagt nur, dass sie für eine Kontextverbindung nicht verfügbar ist. Gibt es irgendwo eine Liste von Dingen, die bei einer Kontextverbindung nicht funktionieren?

4voto

Kev Punkte 115293

Vielleicht sind Sie schon darauf gestoßen in der MSDN SQL Server 2008-Bücher online Der folgende Link erklärt jedoch die Einschränkungen bei der Verwendung von Context Connections:

Beschränkungen für reguläre und kontextbezogene Verbindungen

Wenn Sie die vollständige Ausnahme und den Stack-Trace posten, kann es möglich sein, aus den .NET FX-Assemblies (mit .NET Reflector) oder den mit SQL 2005/2008 bereitgestellten Assemblies zu ermitteln, warum diese Ausnahme ausgelöst wird.

2voto

Das könnte für andere nützlich sein:

    System.Data.DataTable schema = null;
    using (System.Data.SqlClient.SqlCommand cmd = database.Connection.CreateCommand())
    {
        cmd.CommandText = string.Format( "SELECT TOP 1 * FROM {0}", mainTable );
        cmd.CommandType = System.Data.CommandType.Text;
        using (System.Data.SqlClient.SqlDataReader rdr = cmd.ExecuteReader())
        {
            schema = rdr.GetSchemaTable();
        }
    }

1voto

Kevin Gale Punkte 4150

Nach weiteren Recherchen fand ich diese Liste von Dingen, die mit einer Kontextverbindung nicht funktionieren aquí . Einige davon sind auch im obigen Link zu den SQL-Büchern dokumentiert, aber es werden nicht alle erwähnt.

Dinge, die nicht mit einer Kontextverbindung funktionieren.

  • ChangePassword-Methode
  • GetSchema-Methode
  • Pooling von Verbindungen und zugehörige Parameter und Methoden
  • Transparentes Failover bei Datenbankspiegelung
  • Client-Statistiken PacketSize, WorkstationID und andere Client-Informationen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X