mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-29 00:24:46 +02:00
enh mssql databases-size (#2479)
This commit is contained in:
parent
05338c1484
commit
ee271016a0
@ -247,12 +247,16 @@ sub new {
|
|||||||
sub manage_selection {
|
sub manage_selection {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
my ($unlimited_disk, $drives, $result) = ({}, {});
|
||||||
|
|
||||||
$options{sql}->connect();
|
$options{sql}->connect();
|
||||||
|
|
||||||
my ($extra_fields, $join) = ('', '');
|
|
||||||
if (defined($self->{option_results}->{add_unlimited_disk})) {
|
if (defined($self->{option_results}->{add_unlimited_disk})) {
|
||||||
$extra_fields = ', volume_mount_point, total_bytes, available_bytes';
|
$options{sql}->query(query => qq{exec master.dbo.xp_fixeddrives});
|
||||||
$join = 'CROSS APPLY sys.dm_os_volume_stats(DB_ID(sys.database_files.name), sys.database_files.file_id)';
|
$result = $options{sql}->fetchall_arrayref();
|
||||||
|
foreach my $row (@$result) {
|
||||||
|
$drives->{ $row->[0] } = $row->[1] * 1024 * 1024;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$options{sql}->query(query => qq{
|
$options{sql}->query(query => qq{
|
||||||
@ -272,16 +276,11 @@ sub manage_selection {
|
|||||||
ELSE CAST(growth*8/1024 AS varchar(20)) + ''Mb''
|
ELSE CAST(growth*8/1024 AS varchar(20)) + ''Mb''
|
||||||
END,
|
END,
|
||||||
[max_size]
|
[max_size]
|
||||||
$extra_fields
|
FROM sys.database_files'
|
||||||
FROM sys.database_files
|
|
||||||
$join'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
my $unlimited_disk = {};
|
|
||||||
|
|
||||||
# limit can be: 'unlimited', 'overload', 'other'.
|
# limit can be: 'unlimited', 'overload', 'other'.
|
||||||
$self->{databases} = {};
|
$self->{databases} = {};
|
||||||
my $result;
|
|
||||||
while ($result = $options{sql}->fetchall_arrayref()) {
|
while ($result = $options{sql}->fetchall_arrayref()) {
|
||||||
last if (scalar(@$result) <= 0);
|
last if (scalar(@$result) <= 0);
|
||||||
|
|
||||||
@ -318,10 +317,17 @@ sub manage_selection {
|
|||||||
#max_size = -1 (=unlimited)
|
#max_size = -1 (=unlimited)
|
||||||
if ($row->[7] == -1) {
|
if ($row->[7] == -1) {
|
||||||
$self->{databases}->{ $row->[0] }->{$row->[3] . 'files'}->{limit} = 'unlimited';
|
$self->{databases}->{ $row->[0] }->{$row->[3] . 'files'}->{limit} = 'unlimited';
|
||||||
if (defined($self->{option_results}->{add_unlimited_disk}) &&
|
if (defined($self->{option_results}->{add_unlimited_disk})) {
|
||||||
!defined($unlimited_disk->{ $row->[0] . '_' . $row->[3] . 'files_' . $row->[8] })) {
|
# look for the drives
|
||||||
$size += $row->[10];
|
foreach my $drive_name (keys %$drives) {
|
||||||
$unlimited_disk->{ $row->[0] . '_' . $row->[3] . 'files_' . $row->[8] } = 1;
|
if ($row->[2] =~ /^$drive_name/) {
|
||||||
|
if (!defined($unlimited_disk->{ $row->[0] . '_' . $row->[3] . 'files_' . $drive_name })) {
|
||||||
|
$size += $drives->{$drive_name};
|
||||||
|
$unlimited_disk->{ $row->[0] . '_' . $row->[3] . 'files_' . $drive_name } = 1;
|
||||||
|
}
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} elsif ($row->[7] > 0) {
|
} elsif ($row->[7] > 0) {
|
||||||
$size = $row->[7] * 8 * 1024;
|
$size = $row->[7] * 8 * 1024;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user