Archive for Januar, 2009

Thank God it’s Friday!


2009
01.16

Und wieder einmal haben wir es geschafft, endlich Freitag! Ich wünsche allen Lesern ein schönes Wochenende!

SQLAdminToolset

SQLAdminToolset

Wenn ich so auf die Woche zurückblicke, ist das beste das eintreffen unserer Idera Lizenzen gewesen. Jetzt habe ich eine Version des SQL Admin Toolsets, welches ich jedem DBA nur empfehlen kann, da es für den Preis von 495 USD auch für kleinere Betriebe erschwinglich ist und eine menge Arbeit einen abnimmt.

Hier ein kleiner Auszug der Funktionen:

  • Abfragen über mehrere SQL Server
  • Clonen und Kopieren von Logins
  • Datenbanken über Server kopieren
  • Server inventarisieren
  • Patchlevel auslesen
  • u.v.m…

Ich will jetzt nicht weiter darauf eingehen, da der Feierabend langsam näher rückt, aber wer mag kann sich auf der Herstellerseite eine 14-Tage Testversion herunterladen und selbst ausgiebig testen.

Ausgabe von sp_help_job in Temptable speichern


2009
01.15

Ich brauchte eine Übersicht von SQL Agent Jobs (Name, LastRunDate, Current Execution Status und LastRunOutcome), doch da die Job Hisorty auf 10 Tage auf diesem Server begrenzt ist, fällt der Ansatz über die Tabellen msdb.dbo.sysjobs und msdb.dbo.sysjobhistory aus (siehe Beispiel).

select distinct [name] as 'Job Name',
	case [enabled] when 1 then 'Enabled' else 'Disabled' end as 'Enabled',
	cast (ltrim(str(run_date))+' '+stuff(stuff(right('000000'+ltrim(str(run_time)), 6) , 3, 0, ':'), 6, 0, ':') as datetime) as 'Last Run',
	step_id as Step,
	case [h].[run_status]
		when 0 then 'Failed' else 'Success'
		end as 'Status'
from msdb.dbo.sysjobs         j
left join msdb.dbo.sysjobschedules s
	on j.job_id = s.job_id
LEFT join msdb.dbo.sysjobhistory h
	on j.job_id = h.job_id
where step_id = 0
     and h.instance_id in (select max(sh.instance_id)
				from msdb.dbo.sysjobs sj
				join msdb.dbo.sysjobhistory sh
					on sj.job_id = sh.job_id
				where h.step_id = 0
				group by sj.[name])

Die einzigste Möglichkeit von allen Jobs diese Werte zu ermitteln, ist über die Prozedur sp_help_job. Leider ist es nicht möglich das Ergebnis in eine TempTable umzuleiten (siehe Beispiel)

insert into #TempJobTable
   execute sp_help_job

Dies Endet dann meist in folgender Fehlermeldung:

Server: Msg 8164, Level 16, State 1, Procedure sp_get_composite_job_info, Line 67
An INSERT EXEC statement cannot be nested.

Nun bleibt nur noch der Weg über OPENROWSET (siehe Beispiel) was wunderbar funktioniert.

SELECT * INTO #JobInfo
FROM OPENROWSET('sqloledb', 'server=(local);trusted_connection=yes', 'set fmtonly off exec msdb.dbo.sp_help_job')
Select
[name],
cast(ltrim(str(last_run_date))+' '+stuff(stuff(right('000000'+ltrim(str(last_run_time)), 6) , 3, 0, ':'), 6, 0, ':') as NVARCHAR(255)) as 'Last Run',
CASE [current_execution_status]
	WHEN 1 THEN 'Executing'
	WHEN 2 THEN 'Waiting For Thread'
	WHEN 3 THEN 'Between Retries'
	WHEN 4 THEN 'Idle'
	WHEN 5 THEN 'Suspended'
	WHEN 7 THEN 'PerformingCompletion'
	ELSE 'Unknown'
	END AS Status
, CASE [last_run_outcome]
	WHEN 0 THEN 'Failed'
	WHEN 1 THEN 'Success'
	ELSE 'Unknown'
	END AS Result
from #JobInfo
ORDER BY [name]
DROP TABLE #JobInfo

Frühjahrsputz mit EasyCleaner


2009
01.14

Bin heute morgen auf ein kleines nützliches Freeware Tool gefunden, welches beim entrümpeln der Festplatte hilf. Der EasyCleaner von ToniArts hilft bei folgenden Aufgaben:

  • Registry säubern

    EasyCleaner

    EasyCleaner

  • Software verwalten
  • Doppelte Dateien auffinden
  • Temporäre und sonstige nicht benötigte Dateien aufspüren
  • Veraltete Verknüpfungen entfernen
  • Festplattenbelegung analysieren
  • Autostart Einträge bearbeiten
  • IE Verlauf / Cookies / Cache verwalten
  • Zuletzt verwendete Dokumente bearbeiten

Alles in allem ein gutes Helferlein. Herunterladen kann man den EasyCleaner auf der Homepage der Herstellers.

Frohes neues Jahr 2009


2009
01.07

Ich möchte hier an dieser Stelle allen ein frohes neues Jahr 2009 wünschen!

T-SQL Script zum shrinken des Logfiles


2009
01.07

Hier ein kleines T-SQL Script, welches ich verwende, um Logfiles zu shrinken.

USE [DBName]
GO
DBCC SHRINKFILE([DBName]_log, 1)
BACKUP LOG [DBName] WITH TRUNCATE_ONLY
DBCC SHRINKFILE([DBName]_log, 1)

Einfach [DBName] in den gewünschen Datenbanknamen ersetzen.