« Hier ein kleines Beispiel von MongoDB und C# | Main| 3270 ---- ???? »

CLR-Trigger und Microsoft Message Queue

7
Category   
Wenn man einen Trigger schreiben möchte (Insert Trigger auf dem Microsoft SQL Server) um Einfüge-Operationen zu monitoren und in der MSMQ zu versenken, findet man im Internet ein paar Beispiele.
Ist auch schnell implementiert und läuft, man kann ja einfach ein Datatable serialisieren.

Sind es aber mal ein paar mehr inserts , kann man schon an die Grenze kommen 4 MB pro Message!
Der folgende Code schafft (je nach Tabellengröße) einen Workaround ->
public static void InsertTrigger()
        {
            SqlTriggerContext triggerContext = SqlContext.TriggerContext;
            SqlCommand command = new SqlCommand();
            SqlPipe pipe = SqlContext.Pipe;
            Random random = new Random();
            if (triggerContext.TriggerAction == TriggerAction.Insert)
            {
                command.Connection = new SqlConnection("context connection=true");
                command.Connection.Open();
                command.CommandText = "SELECT * FROM INSERTED";
                var sda = new SqlDataAdapter(command);
                var ds = new DataSet("DATASET");
                sda.Fill(ds);
                MessageQueue mq = new MessageQueue(".\\PRIVATE$\\sqlmsmq");
                DataTable dt = new DataTable();
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    if (dt.Rows.Count % 100 == 0) {
                        if (dt.Rows.Count > 0) {
                            sendMessage(mq,dt);
                        }
                        dt = ds.Tables[0].Clone();
                    }                    
                    dt.ImportRow(row);
                }
                if (dt.Rows.Count > 0)
                {
                    sendMessage(mq, dt);
                }
                command.Connection.Close();
            }
        }

Einfach die Datensätze spalten und als einzelne Messages senden

Gruß JJR

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2