Zum Inhalt springen

MSSQL: CLR-Funktion


Serear

Empfohlene Beiträge

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 von Serear
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...