Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (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 von Serear
Geschrieben

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

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...