Serear Geschrieben 23. November 2014 Teilen Geschrieben 23. November 2014 (bearbeitet) Hallo zusammen, im Rahmen meines Abschlussprojekts muss ich CLR-Funktionen für den MSSQL-Server programmieren. Nun stehe ich vor dem Problem, das ich innerhalb einer Funktion auf denselben Server zugreifen möchte. Was ich dazu im Internet gefunden habe, wäre: using(SqlConnection connection = new SqlConnection("context connection=true")) { connection.Open(); // Use the connection } Allerdings gibt mir das immer ein System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. zurück. Habe jetzt erstmal eine kleine Testfunktion geschrieben, damit ich nicht immer alles Komipilieren muss. Testfunktion: [Microsoft.SqlServer.Server.SqlFunction(DataAccess = Microsoft.SqlServer.Server.DataAccessKind.Read)] public static string test() { using (SqlConnection conn = new SqlConnection("context connection=true")) { //create a command from the current context SqlCommand cmd = conn.CreateCommand(); //execute something cmd.CommandText = "select @@version"; conn.Open(); return (string)cmd.ExecuteScalar(); } } Fehlermeldung: Meldung 6522, Ebene 16, Status 1, Prozedur test, Zeile 0 .NET Framework-Fehler beim Ausführen der benutzerdefinierten Routine oder des benutzerdefinierten Aggregats 'test': System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. System.NullReferenceException: bei System.Data.SqlServer.Internal.ClrLevelContext.GetCurrentContextForLobAccess(CClrLobContext* pLobContext) bei System.Data.SqlServer.Internal.ClrLevelContext.GetXvarWlobStream(CXVariantBase* pxvarSource, XvarLOBStreamInitCode eCode, Int64 lcid, SqlCompareOptions compareOpts, CClrLobContext* pLobContext) . Würde mich über jegliche Lösungsansätze freuen. LG EDIT: Der Assembly wird mithilfe von C# programmiert. Bearbeitet 23. November 2014 von Serear Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 23. November 2014 Autor Teilen Geschrieben 23. November 2014 Habe den Code jetzt mal abgeändert in [Microsoft.SqlServer.Server.SqlFunction(DataAccess = Microsoft.SqlServer.Server.DataAccessKind.Read)] public static int test() { using (SqlConnection conn = new SqlConnection("context connection=true")) { //create a command from the current context SqlCommand cmd = conn.CreateCommand(); //execute something cmd.CommandText = "select count(*) from Mitarbeiter"; conn.Open(); int i = (int)cmd.ExecuteScalar(); i++; return i; } } Was im ungefähren dem entspricht, was ich den auch vor habe. Ich möchte mit den Daten innerhalb dieser Funktion weiter arbeiten. Dies läuft glatt durch, nur sehe ich momentan absolut nicht, warum es beim anderen nicht geklappt hat. Bin davon ausgegangen das "System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. " sich auf die Context-Verbindung bezogen hat. Lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mttkrb Geschrieben 23. November 2014 Teilen Geschrieben 23. November 2014 Hallo, im folgenden Beispiel wird zunächst Connection.open() aufgerufen. Kontextverbindung Gruß Jogibaer0411 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 24. November 2014 Autor Teilen Geschrieben 24. November 2014 Moin, erstmal Danke für deine Antwort. Glaube allerdings nicht das es dadran lag, da die eigentliche Ausführung des SQL-Statements auch in meinem Code erst nach dem Connection.Open() erfolgte. Lg Malte Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.