Custom WCF MSMQ-Tracer

Posted in Allgemein on November 30th, 2009 by Andreas Schwarz

WCF Custom MSMQ Tracer – Sample

Das Standard-Traceing im WCF Framework ist erstaunlich einfach anzuwenden und zu konfigurieren. Auch das im Framework enthaltene Analysetool ist ganz brauchbar.

So viel Luxus ist man gar nicht gewohnt wenn man vorher hauptsächlich mit dem WSE-Framework zu tun hatte…

Leider ist Microsoft den Weg nicht komplett zu Ende gegangen. Gibt man sich nicht mit der Erzeugung von Logdateien zufrieden, sondern will das Ganze in eine Datenbank  bzw. Message Queue persistieren darf man wieder selbst tätig werden.

Ich würde davon abraten das komplette Traceing direkt synchron aufzusetzen. Es hat sich bewährt die Nachrichten zuerst einmal zwischenzulagern und die Verarbeitung dann asynchron auszuführen.

public class MsmqTracer : TraceListener
{
   public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
   {
   if (!string.IsNullOrEmpty(traceQueue))
   {
      try
      {
      MessageQueue msmq = new MessageQueue(traceQueue);
      MessageQueueTransaction trans = new MessageQueueTransaction();

      trans.Begin();
      Message msg = new Message(data.ToString(), new XmlMessageFormatter());

      msmq.Send(msg, trans);
      trans.Commit();
      }

      catch (Exception msmqEx)
      {
         Debug.WriteLine(string.Format("Error while persisting trace: {0}", msmqEx.ToString()));
      }
   }
   else
   {
      Debug.WriteLine("Missing MSMQ Trace");
   }
}

public override void Write(string message) {}

public override void WriteLine(string message) {}


  

 
Tags: , ,

WCF Performance Counter

Posted in Allgemein on November 30th, 2009 by Andreas Schwarz

Das WCF-Framework stellt eine Unzahl an Meßwerten zur Verfügung.

Leider ist das Ganze kaum dokumentiert…

Die Aktivierung der Counter ist denkbar einfach (wenn man mal rausgefunden hat dass es sowas überhaupt gibt…) und erfolgt durch einen Eintrag in der App.Config des Hosts

PerfCountersConfig

Die entsprechenden Werte lassen sich dann direkt mit perfmon anzeigen und auswerten.

perfmon1

perfmon2

Tags: ,

Excel Dateien mit SQL auswerten

Posted in Allgemein, SQL Server on November 11th, 2009 by Andreas Schwarz

Excel Query

Excel 97 – 2003

SELECT

     [ID], -- Excel Spalte 1
     [Text] -- Excel Spalte 2

FROM

     OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
     'Data Source=C:\test.xls;Extended Properties=Excel 8.0')
     ...[Tabelle1$] -- Tabellenblatt

ORDER BY

[ID] DESC

Excel 2007:

Um die Funktionalität auch bei .xslx-Dateien nutzen zu können, muß folgende Komponente auf dem System installiert sein:
2007 Office System Driver: Data Connectivity Components
 

SELECT
	*
FROM
	OPENDATASOURCE(
		'Microsoft.ACE.OLEDB.12.0',
		'Data Source=C:\test.xlsx;Extended Properties=Excel 12.0')
		...[Tabelle1$]

Leider funktioniert das Ganze aktuell nur auf 32-Bit Systemen, da die entsprechenden Provider auf 64-Bit Systemen derzeit nicht zur Verfügung gestellt werden.

Tags: , ,

X-Server SQL Query Template mit OPENROWSET

Posted in SQL Server on November 4th, 2009 by Andreas Schwarz
SELECT * FROM OPENROWSET
      ('MSDASQL', 'DRIVER={SQL Server};SERVER=zensiert;UID=zensiert;PWD=zensiert,
      Testdatenbank.Schema.TestTabelle) 

      WHERE ...

Um dieses Feature nutzen zu können muss folgendes Setting aktiviert sein

EXEC sp_configure 'Ad Hoc Distributed Queries', '1' RECONFIGURE

http://technet.microsoft.com/de-de/library/ms187569.aspx

Tags: ,

SQL Cursor Template

Posted in SQL Server on November 4th, 2009 by Andreas Schwarz
DECLARE @lastname varchar(100)
DECLARE @firstname varchar(100)

DECLARE query_cursor CURSOR FOR

	SELECT
		LastName,
		FirstName
	FROM
		T_AddressData
	ORDER BY
		PK_AddressData

OPEN query_cursor

FETCH NEXT FROM query_cursor
INTO @lastname, @firstname

PRINT '---------- Results ----------'

WHILE @@FETCH_STATUS = 0
BEGIN
	PRINT (@lastname + ' ' + @firstname)

	FETCH NEXT FROM query_cursor
	INTO @lastname, @firstname
END

CLOSE query_cursor
DEALLOCATE query_cursor
Tags: ,