Monitorare i pocessi attivi di Sql Server

In questi giorni mi è capitato di andare alla ricerca di qualcosa che portava la cpu di Sql Server al massimo, credo che sia interessante vedere quali sono gli strumenti che si possono utilizzare per un compito come questo.

Activity Monitor
L’Activity Monitor permette di visualizzare informazioni sui processi di SQL Server.
Vengono visualizzati tutti gli spid con il loro stato, l’applicazione che li ha generati ed è possibile fare il Kill del processo.

image

Profiler
Il profiler è uno strumento estremamente potente che ci permette di monitorare tutte quelle che sono le query che vengono eseguite sull’istanza di Sql Server.
Le configurazioni sono praticamente infinite, possiamo specificare il nome del db, l’utente, i tempi di durata delle query, vedere le stored procedure e anche gli statement eseguiti all’interno.
Una volta attivato è possibile esportare la traccia in una tabella o in file.
Le best practice dicono di attivarlo su una macchina diversa dal server sql per ridurre il carico di elaborazione che comunque è alto essendo uno strumento di analisi dei problemi.

sp_who2 e sp_WhoIsActive
La stored procedure sp_who2 ricalca in parte le funzionalità del Activity Monitor, ma essendo un script è sicuramente più veloce e comodo da eseguire.
sp_WhoIsActive invece è una interessante stored procedure che potete trovare qui http://sqlblog.com/files/folders/release/entry29675.aspx.
Questa sp_WhoIsActive permette di visualizzare in maniera dettagliata quali sono i processi attivi che query stanno eseguendo, nel mio caso è stata estremamente utile.

image

Tag di Technorati:

Configurare il net.tcp binding in un servizio wcf

Wcf si basa sui modello ABC (Address, Binding, Contract) questo modello è estremamente flessibile e ci permette ad esempio di cambiare il binding, cioè il modo in cui i servizi  comunicano, senza modificare come sono fatti.

Esistono diversi tipi di bindig, il NetTcpBinding utilizza il protocollo di trasporto Tcp, i pacchetti sono compressi in binario a differenza del basicHttp o del wsHttp che sono in soap. Vediamo quindi come configurare un servizio che sfrutti il NetTcpBinding e come ospitarlo in IIS 7.5.

Per prima cosa vediamo come configurare il servizio wcf

<system.serviceModel>
  <services>
    <service name="MyService" behaviorConfiguration="MyServiceBehavior">
      <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyTcpConfiguration" contract="IMyService"/>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
  </services>
  
  <bindings>
    <netTcpBinding>
      <binding name="MyTcpConfiguration">
        <security mode="None"/>
      </binding>
    </netTcpBinding>
  </bindings>
  
  <behaviors>
    <serviceBehaviors>
      <behavior name="MyServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

IIS 7 permette di ospitare servizi che utilizzino il protocollo Tcp tramite Windows Process Activation Services.

Per prima cosa verifichiamo che sia installato nelle Feature il Non-HTTP Activation
image

Sul sito che conterrà il nostro servizio aggiungiamo un nuovo binding, come tipologia net.tcp e come binding information la porta ad esempio 809:*
image

All’interno della Application negli Advanced Settings aggiungiamo il novo protocollo supportato.
image

Per consumare il web service adiamo a specificare l’indirizzo del endpoint così

<endpoint address="net.tcp://server:809/MyService.svc"
    binding="netTcpBinding" 
    bindingConfiguration="MyBindingConfiguration"
    contract="IDocumentService" 
    name="MyService" />
Tag di Technorati: ,,
«April»
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567