SQL Server selber bietet hier einen undokumentierten DBCC Befehl an
DBCC log ( {dbid|dbname}, [, type={-1|0|1|2|3|4}] )
type zeigt nur minimale Informationen an, -1 zeigt die vollständigen Informationen an
Allerdings ist anzumerken, dass für Normalsterbliche der Inhalt der Log Datei schwer zu lesen und zu verstehen ist. Es empfiehlt sich, hier ein paar Euros auszugeben für Third-Party Tools wie den LogExplorer von Lumigent.
IF OBJECT_ID('lfdsum_t') IS NOT NULL
DROP TABLE lfdsum_t
GO
CREATE TABLE lfdsum_t (col1 int)
INSERT INTO lfdsum_t values (1);
INSERT INTO lfdsum_t values (2);
INSERT INTO lfdsum_t values (3);
INSERT INTO lfdsum_t values (4);
INSERT INTO lfdsum_t values (5);
SELECT
a.COL1
,(SELECT
Sum(b.col1)
FROM
lfdsum_t b
WHERE
b.col1 <= a.col1) lfd_Sum
FROM
lfdsum_t a
DROP TABLE lfdsum_t
COL1 lfd_Sum
----------- -----------
1 1
2 3
3 6
4 10
5 15
(5 row(s) affected)
Zugegebenermassen bin ich mir nicht sicher, ob der technische Begriff dafür 'laufende Summe' ist. Für Anregungen zu einem treffenderen Begriff bin ich dankbar.
xp_servicecontrol ist eine undokumentierte erweiterte Prozedur, die zur Kontrolle von Diensten auf der SQL Server Maschine eingesetzt werden kann.
Für alle diejenigen, die noch wissen was die DOS Eingabeaufforderung ist :)
SELECT DATEADD(day, 0 , DATEDIFF(day, 0, MsgDateReceived)) AS "Datum" , COUNT(*) AS Anzahl FROM mails_header GROUP BY DATEADD(day, 0 , DATEDIFF(day, 0, MsgDateReceived)) ORDER BY "Datum" DESC
SET NOCOUNT ON DECLARE @hex VARCHAR(10) DECLARE @stmt NVARCHAR(255) DECLARE @int INT SET @hex = '0x0000008A' SELECT @stmt = N'SELECT @int = CONVERT( int , ' + @hex + ' )' EXEC sp_ExecuteSql @stmt, N' @int Int Out', @int OUT SELECT @int GO GO GO ----------- 138
DELETE logged die Daten für jede einzelne Zeile, die von dem Statement betroffen sind und entfernt physikalisch den Record aus der Seite. Fährt man seine Datenbanken im "Full Recovery" Modus, kann die Aufzeichnung eines jeden einzelnen betroffenen Datensatzes das Transaktionsprotokoll enorm aufblähen. Dies ist aber notwendig, damit SQL Server im Falle einen Falles die Datenbank so aktuell wie möglich wiederherstellen kann. Der Umstand, das jeder Datensatz protokolliert wird, macht auch verständlich, daß umfangreiche DELETE Operationen langsam sind.