12. Oktober 2011 10:06
12. Oktober 2011 10:26
12. Oktober 2011 10:36
Grundsätzlich sollte die Datenbank bis kurz vor knapp gefüllt sein. Die Datenbank sollte unter 80 % der Dateigröße bleiben.
12. Oktober 2011 11:02
12. Oktober 2011 11:53
es ist eine Füllung von 99% vorhanden. (unter Datenbank->Informationen)
Das sollte aber doch nicht so sein, oder?
Ich kenne das das die Datenbank nur "bis zu 80%" gefüllt sein sollte.....alles andere wirkt sich auf die Performance aus.
Die Dateivergrösserung ist auf 512000 KB eingestellt. und nicht auf %
auf der Datenplatte haben wir noch 20 GB frei, die ich nutzen könnte.
12. Oktober 2011 12:01
12. Oktober 2011 12:39
fiddi hat geschrieben:Das ist erst einmal nicht schlimm, wenn die DB auf automatische Vergrößerung steht. Das mit den 80% Füllgrad gilt für die Native- DB.
12. Oktober 2011 12:42
12. Oktober 2011 12:57
Pegasus hat geschrieben:Kurz vor knapp gefüllt?
Sebastian Pfliegel hat geschrieben:Grundsätzlich sollte die Datenbank bis kurz vor knapp gefüllt sein.
17. Oktober 2011 09:03
USE DynamucsNAV
GO
EXEC DBCC LOGINFO
-- Suche & Ersetze den Ausdruck <Database> mit dem Namen der zu überwachenden Datenbank
USE [msdb]
GO
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'STRYK System Improvement' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'STRYK System Improvement'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'SSI: File Usage (<Database>)',
@enabled=1,
@notify_level_eventlog=2,
@notify_level_email=2,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'Monitors DB file usage and raises error if free space is less than 20 percent',
@category_name=N'STRYK System Improvement',
@owner_login_name=N'sa',
@notify_email_operator_name=N'SSI: PTB Admin', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'db',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'
SET STATISTICS IO OFF
SET NOCOUNT ON
DECLARE @size_kb int, @used_kb int, @free_perc decimal(18,2), @cmd nvarchar(250)
CREATE TABLE #tmpspc (Fileid int, FileGroup int, TotalExtents int, UsedExtents int, Name sysname, FileName nchar(520))
INSERT #tmpspc EXEC (''dbcc showfilestats with no_infomsgs'')
SELECT
@size_kb = SUM(s.size * CONVERT(float,8)),
@used_kb = SUM(CAST(tspc.UsedExtents * convert(float,64) AS float))
FROM sys.filegroups AS g
INNER JOIN sys.master_files AS s ON (s.type = 0 AND s.database_id = db_id() AND (s.drop_lsn IS NULL)) AND (s.data_space_id=g.data_space_id)
INNER JOIN #tmpspc tspc ON tspc.Fileid = s.file_id
WHERE (CAST(cast(g.name as varbinary(256)) AS sysname)=N''Data Filegroup 1'')
DROP TABLE #tmpspc
declare @max_idx bigint
-- select @max_idx = max(page_count) * 8 / 1024
-- from sys.dm_db_index_physical_stats (db_id(), 0, null, null, ''limited'')
-- select @max_idx as [max_IdxSize (MB)], @max_idx * 1.5 as [min_FreeDbSpace (MB)]
SET @free_perc = ((convert(decimal(18,2), @size_kb) - convert(decimal(18,2), @used_kb)) / convert(decimal(18,2), @size_kb) * 100)
IF @free_perc < 20 BEGIN
SET @cmd = ''Warning: Low free space in database "'' + db_name() + ''", File Size (MB): '' + convert(varchar(15), @size_kb / 1024) +
'', Used Space (MB): '' + convert(varchar(15), @used_kb / 1024) +
'', Free Space (MB): '' + convert(varchar(15), (@size_kb - @used_kb) / 1024) +
'', Free Space (Percent): '' + convert(varchar(15), @free_perc) + char(13) + char(10) +
''Expand the file size to have at least 20 Percent free space.''
RAISERROR(@cmd, 19, 1) WITH LOG
END ELSE
SELECT ''Database "'' + db_name() + ''", File Size (MB): '' + convert(varchar(15), @size_kb / 1024) +
'', Used Space (MB): '' + convert(varchar(15), @used_kb / 1024) +
'', Free Space (MB): '' + convert(varchar(15), (@size_kb - @used_kb) / 1024) +
'', Free Space (Percent): '' + convert(varchar(15), @free_perc)
',
@database_name=N'<Database>',
@flags=4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'daily',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=1,
@freq_subday_interval=6,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20111014,
@active_end_date=99991231,
@active_start_time=20000,
@active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
-- Suche & Ersetze den Ausdruck <Database> mit dem Namen der zu überwachenden Datenbank
USE [msdb]
GO
EXEC msdb.dbo.sp_add_alert @name=N'SSI: Log Usage (<Database>)',
@message_id=0,
@severity=0,
@enabled=1,
@delay_between_responses=900,
@include_event_description_in=0,
@category_name=N'STRYK System Improvement',
@performance_condition=N'MSSQL$SSI_SQL2008_1:Databases|Percent Log Used|<Database>|>|80'
GO