From 387a9e3f73ca26dd42231837232e1a27b04efbe9 Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Thu, 20 Dec 2018 11:57:56 +0100 Subject: [PATCH] Fix mssql version bug --- centreon/plugins/dbi.pm | 8 +++++++- database/mssql/dbi.pm | 41 ++++++++++++++++++++++++++++++++++++++++ database/mssql/plugin.pm | 1 + 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 database/mssql/dbi.pm diff --git a/centreon/plugins/dbi.pm b/centreon/plugins/dbi.pm index 5c636307b..05d0cdb7f 100644 --- a/centreon/plugins/dbi.pm +++ b/centreon/plugins/dbi.pm @@ -190,6 +190,12 @@ sub is_version_minimum { return 1; } + +sub set_version { + my ($self) = @_; + + $self->{version} = $self->{instance}->get_info(18); # SQL_DBMS_VER +} sub connect { my ($self, %options) = @_; @@ -220,7 +226,7 @@ sub connect { return (-1, $err_msg); } - $self->{version} = $self->{instance}->get_info(18); # SQL_DBMS_VER + $self->set_version(); return 0; } diff --git a/database/mssql/dbi.pm b/database/mssql/dbi.pm new file mode 100644 index 000000000..bb5258413 --- /dev/null +++ b/database/mssql/dbi.pm @@ -0,0 +1,41 @@ +# +# Copyright 2018 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package database::mssql::dbi; + +use base qw(centreon::plugins::dbi); + +use strict; +use warnings; + +sub set_version { + my ($self) = @_; + + $self->{version} = $self->{instance}->get_info(18); # SQL_DBMS_VER + return if (defined($self->{version}) && $self->{version} ne ''); + + $self->query(query => q{select SERVERPROPERTY('productversion') as product_version}); + my $row = $self->fetchrow_hashref(); + $self->{version} = $row->{product_version}; +} + +1; + +__END__ \ No newline at end of file diff --git a/database/mssql/plugin.pm b/database/mssql/plugin.pm index 64dad1ca4..2d653a920 100644 --- a/database/mssql/plugin.pm +++ b/database/mssql/plugin.pm @@ -48,6 +48,7 @@ sub new { 'transactions' => 'database::mssql::mode::transactions', ); + $self->{sql_modes}{dbi} = 'database::mssql::dbi'; return $self; }