diff --git a/checkers/mssql.go b/checkers/mssql.go new file mode 100644 index 0000000..7a50fe1 --- /dev/null +++ b/checkers/mssql.go @@ -0,0 +1,35 @@ +/* + Copyright 2020 YANDEX LLC + + 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 checkers + +import ( + "context" + "database/sql" +) + +// MSSQL checks whether MSSQL server is primary or not. +func MSSQL(ctx context.Context, db *sql.DB) (bool, error) { + var status bool + + if err := db.QueryRowContext(ctx, "SELECT IIF(count(database_guid) = 0, 'TRUE', 'FALSE') AS STATUS "+ + "FROM sys.database_recovery_status"+ + " WHERE database_guid IS NULL", + ).Scan(&status); err != nil { + return false, err + } + return status, nil +}