MS-SQL-Server

3 Lösungsansätze:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

oder

SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)

oder

SELECT CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112)

im Query-Analyzer folgende Zeile ausführen:

SELECT SERVERPROPERTY(‘productversion’), SERVERPROPERTY (‘productlevel’), SERVERPROPERTY (‘edition’)

ergibt beispielsweise folgendes:

8.00.2039 SP4 Developer Edition

Um das Transaktiosnprotokoll einer spezifischen Datenbank abzuschneiden und diese zu verkleinern ist folgendes im Query-Analyzer einzugeben und auszuführen: (dabei ist database-name durch den Namen der Datenbank zu ersetzen!)

DBCC SHRINKFILE(database-name_log, 2)
BACKUP LOG database-name WITH TRUNCATE_ONLY
DBCC SHRINKFILE(database-name_log, 2)

Um den Platzbedarf von komplexen Indexstrukturen zu reorganisieren kann eine Defragmentierung eines Indexes über folgenden Befehl erzwungen werden:

dbcc indexdefrag (db_name,tblName,IndexName)

Nachdem per “Insert into…” neue Datensätze in eine Tabelle eingefügt wurden ist oft notwendig den Identitätswert zu ermitteln, um zum Beispiel Child-Datensätze mit diesen Zeigern zu versehen. Grundsätzlich kann man das mit “select max(ID)…” machen, hat aber nicht die Gewißheit, daß ein anderer Benutzer zum Gleichen Zeitpunkt auch Daten angefügt hat und man so ausversehen dessen ID’s erhält…

Abhilfe schafft die Deklaration einer Variablen (@newID) und das Setzen diser sofort nach Ausführen der “insert into…”:

set @newID=(SELECT SCOPE_IDENTITY() As Id)

Die hier ermittelte ID ist der Letzte Wert der Identitätsspalte.