ALLE query’s op een SQL Server 2008 Express-database loggen?

Is er een manier om SQL Server 2008 Express te vertellen dat elke query (inclusief elke SELECT-query!) in een bestand moet worden vastgelegd?

Het is een ontwikkelmachine, dus de negatieve bijwerkingen van het loggen van Select-Queries zijn geen probleem.

Voordat iemand voorstelt om de SQL Profiler te gebruiken: dit is niet beschikbaar in Express (weet iemand of het beschikbaar is in de webeditie?) en ik ben op zoek naar een manier om query’s vast te leggen, zelfs als ik weg ben.


Antwoord 1, autoriteit 100%

SQL Server Profiler:

  • Bestand → Nieuw spoor
  • Het tabblad “Algemeen” wordt weergegeven.
  • Hier kun je “Opslaan in bestand:” kiezen, dus het wordt in een bestand opgeslagen.
  • Bekijk het tabblad “Evenementselectie”
  • Selecteer de items die u wilt loggen.
  • TSQL → SQL:BatchStarting zorgt voor sql-selecties
  • Opgeslagen procedures → RPC:Voltooid geeft u opgeslagen procedures.

Meer informatie van Microsoft: SQL Server 2008 Books Online – SQL Server Profiler gebruiken

Update – SQL Express-editie:

Er is een opmerking gemaakt dat MS SQL Server Profiler niet beschikbaar is voor de express-editie.
Er lijkt een gratis alternatief te zijn: Profiler voor Microsoft SQL Server 2005 Express Edition


Antwoord 2, autoriteit 45%

Er is nog een manier om informatie te krijgen over query’s die zijn uitgevoerd op MS SQL Server Express hier beschreven.

Kortom, het voert slimme query’s uit naar systeemtabellen en krijgt informatie (tekst, uitgevoerde tijd) over query’s (of indien nodig in de cache opgeslagen queryplannen). Zo kunt u informatie krijgen over uitgevoerde zoekopdrachten zonder profiler in MSSQL 2008 Express-editie.

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC

Antwoord 3, autoriteit 41%

…Laat antwoord, maar ik hoop dat het nuttig zou zijn voor andere lezers hier…

Het gebruik van SQL Server Express met geavanceerde controlevereisten zoals deze is niet echt optimaal, tenzij het alleen in een ontwikkelomgeving is.

Je kunt sporen gebruiken (www.broes.nl/2011/10/profiling-on-sql-server-express/) om de gegevens te krijgen die je nodig hebt, maar je moet deze zelf ontleden.

Er zijn tools van derden die dit kunnen, maar hun kosten zullen behoorlijk hoog zijn. Log explorervan ApexSQL kan alles loggen, behalve selecteren en Idera’scompliance manager zal ook geselecteerde verklaringen loggen, maar de kosten zijn een stuk hoger.


Antwoord 4, autoriteit 4%

U kunt wijzigingen registreren. SQL Server 2008 maakt dit bijzonder gemakkelijk met Change Data Capture. Maar SQL Server is niet erg goed in het loggen van SELECT’s.

Het is theoretisch mogelijk met de profiler, maar het zal je prestaties doden. U kunt er “mee wegkomen” op uw bureaublad, maar ik denk dat u zult merken dat uw machine langzaam genoeg handelt om problemen te veroorzaken. En het zal zeker niet werken na enige vorm van implementatie.

Een belangrijk punt dat een paar anderen al hebben gemist: tenzij ze iets hebben gewijzigd voor 2008 waar ik niets over heb gehoord, kun je geen SELECT activeren.


Antwoord 5

Voor alle duidelijkheid: ik geef de hints voor het gebruik van DataWizard’s SQL Performance Profilerals een afzonderlijk antwoord, omdat het echt het tegenovergestelde is van het antwoord dat verwijst naar SQL Server Profiler.

Er is een gratis proefperiode van 14 dagen, maar zelfs als je het moet kopen, kost het slechts $ 20 voor 3 servers (op het moment van schrijven, 28-06-2012). Dit lijkt me meer dan redelijk gezien de duizenden die iedereen die de SQL Server Express-editie gebruikt, heeft bespaard.

Ik heb de proef tot nu toe alleen gebruikt en het biedt precies wat de OP zocht: een manier om alle vragen te traceren die binnenkomen in een specifieke database. Het biedt ook de mogelijkheid om een tracering naar een XML-bestand te exporteren. De betaalde versie biedt wat meer functies, maar ik heb ze nog niet geprobeerd.

Disclaimer:ik ben gewoon een andere ontwikkelaar die af en toe met DB’s rommelt en ik ben op geen enkele manier verbonden met DataWizard. Ik vond hun tool gewoon zo leuk en wilde mensen laten weten dat het bestond, omdat het me heeft geholpen bij het profileren van mijn SQL Server Express-installatie.


Antwoord 6

Ik zou ofwel triggers gebruiken of software van derden gebruiken, zoals Red Gate, om je SQL-logbestanden te bekijken.


Antwoord 7

Het lijkt erop dat je sporen kunt maken met T-SQL

http://support.microsoft.com/kb/283790/

Dat kan helpen.

Other episodes