@cryptotaxi247 / netdata-1 / commits / 34269aeec

Additional tests to MSSQL (windows.plugin) (#21255)

thiagoftsm committed Nov 4, 2025 at 14:28 UTC 34269aeeccd47938c8123ea53f80a90dee5d11d6
1 file changed +52 -49
src/collectors/windows.plugin/perflib-mssql.c
+52 -49
@@ -271,6 +271,10 @@ enum netdata_mssql_odbc_errors {
271 NETDATA_MSSQL_ODBC_FETCH
272 };
273
274 +static inline int netdata_mssql_check_result(SQLRETURN ret) {
275 + return (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO);
276 +}
277 +
278 static char *netdata_MSSQL_error_text(enum netdata_mssql_odbc_errors val)
279 {
280 switch (val) {
@@ -338,20 +342,19 @@ static ULONGLONG netdata_MSSQL_fill_long_value(SQLHSTMT *stmt, const char *mask,
342 SQLRETURN ret;
343
344 ret = SQLExecDirect(stmt, query, SQL_NTS);
341 - if (ret != SQL_SUCCESS) {
345 + if (netdata_mssql_check_result(ret)) {
346 netdata_MSSQL_error(SQL_HANDLE_STMT, stmt, NETDATA_MSSQL_ODBC_QUERY, instance);
347 return (ULONGLONG)ULONG_LONG_MAX;
348 }
349
350 ret = SQLBindCol(stmt, 1, SQL_C_LONG, &db_size, sizeof(long), &col_data_len);
347 -
348 - if (ret != SQL_SUCCESS) {
351 + if (netdata_mssql_check_result(ret)) {
352 netdata_MSSQL_error(SQL_HANDLE_STMT, stmt, NETDATA_MSSQL_ODBC_PREPARE, instance);
353 return (ULONGLONG)ULONG_LONG_MAX;
354 }
355
356 ret = SQLFetch(stmt);
354 - if (ret != SQL_SUCCESS) {
357 + if (netdata_mssql_check_result(ret)) {
358 netdata_MSSQL_error(SQL_HANDLE_STMT, stmt, NETDATA_MSSQL_ODBC_FETCH, instance);
359 return (ULONGLONG)ULONG_LONG_MAX;
360 }
@@ -385,7 +388,7 @@ void dict_mssql_fill_instance_transactions(struct mssql_db_instance *mdi)
388 mdi->parent->instanceID);
389
390 SQLRETURN ret = SQLExecDirect(mdi->parent->conn->dbInstanceTransactionSTMT, (SQLCHAR *)query, SQL_NTS);
388 - if (ret != SQL_SUCCESS) {
391 + if (netdata_mssql_check_result(ret)) {
392 mdi->collecting_data = false;
393 netdata_MSSQL_error(
394 SQL_HANDLE_STMT,
@@ -397,7 +400,7 @@ void dict_mssql_fill_instance_transactions(struct mssql_db_instance *mdi)
400
401 ret = SQLBindCol(
402 mdi->parent->conn->dbInstanceTransactionSTMT, 1, SQL_C_CHAR, object_name, sizeof(object_name), &col_object_len);
400 - if (ret != SQL_SUCCESS) {
403 + if (netdata_mssql_check_result(ret)) {
404 netdata_MSSQL_error(
405 SQL_HANDLE_STMT,
406 mdi->parent->conn->dbInstanceTransactionSTMT,
@@ -408,7 +411,7 @@ void dict_mssql_fill_instance_transactions(struct mssql_db_instance *mdi)
411
412 ret =
413 SQLBindCol(mdi->parent->conn->dbInstanceTransactionSTMT, 2, SQL_C_LONG, &value, sizeof(value), &col_value_len);
411 - if (ret != SQL_SUCCESS) {
414 + if (netdata_mssql_check_result(ret)) {
415 netdata_MSSQL_error(
416 SQL_HANDLE_STMT,
417 mdi->parent->conn->dbInstanceTransactionSTMT,
@@ -507,7 +510,7 @@ void dict_mssql_fill_transactions(struct mssql_db_instance *mdi, const char *dbn
510 dbname);
511
512 SQLRETURN ret = SQLExecDirect(mdi->parent->conn->dbTransactionSTMT, (SQLCHAR *)query, SQL_NTS);
510 - if (ret != SQL_SUCCESS) {
513 + if (netdata_mssql_check_result(ret)) {
514 mdi->collecting_data = false;
515 netdata_MSSQL_error(
516 SQL_HANDLE_STMT, mdi->parent->conn->dbTransactionSTMT, NETDATA_MSSQL_ODBC_QUERY, mdi->parent->instanceID);
@@ -516,14 +519,14 @@ void dict_mssql_fill_transactions(struct mssql_db_instance *mdi, const char *dbn
519
520 ret = SQLBindCol(
521 mdi->parent->conn->dbTransactionSTMT, 1, SQL_C_CHAR, object_name, sizeof(object_name), &col_object_len);
519 - if (ret != SQL_SUCCESS) {
522 + if (netdata_mssql_check_result(ret)) {
523 netdata_MSSQL_error(
524 SQL_HANDLE_STMT, mdi->parent->conn->dbTransactionSTMT, NETDATA_MSSQL_ODBC_PREPARE, mdi->parent->instanceID);
525 goto endtransactions;
526 }
527
528 ret = SQLBindCol(mdi->parent->conn->dbTransactionSTMT, 2, SQL_C_LONG, &value, sizeof(value), &col_value_len);
526 - if (ret != SQL_SUCCESS) {
529 + if (netdata_mssql_check_result(ret)) {
530 netdata_MSSQL_error(
531 SQL_HANDLE_STMT, mdi->parent->conn->dbTransactionSTMT, NETDATA_MSSQL_ODBC_PREPARE, mdi->parent->instanceID);
532 goto endtransactions;
@@ -599,7 +602,7 @@ void dict_mssql_fill_locks(struct mssql_db_instance *mdi, const char *dbname)
602 dbname);
603
604 SQLRETURN ret = SQLExecDirect(mdi->parent->conn->dbLocksSTMT, (SQLCHAR *)query, SQL_NTS);
602 - if (ret != SQL_SUCCESS) {
605 + if (netdata_mssql_check_result(ret)) {
606 mdi->collecting_data = false;
607 netdata_MSSQL_error(
608 SQL_HANDLE_STMT, mdi->parent->conn->dbLocksSTMT, NETDATA_MSSQL_ODBC_QUERY, mdi->parent->instanceID);
@@ -608,14 +611,14 @@ void dict_mssql_fill_locks(struct mssql_db_instance *mdi, const char *dbname)
611
612 ret = SQLBindCol(
613 mdi->parent->conn->dbLocksSTMT, 1, SQL_C_CHAR, resource_type, sizeof(resource_type), &col_object_len);
611 - if (ret != SQL_SUCCESS) {
614 + if (netdata_mssql_check_result(ret)) {
615 netdata_MSSQL_error(
616 SQL_HANDLE_STMT, mdi->parent->conn->dbLocksSTMT, NETDATA_MSSQL_ODBC_PREPARE, mdi->parent->instanceID);
617 goto endlocks;
618 }
619
620 ret = SQLBindCol(mdi->parent->conn->dbLocksSTMT, 2, SQL_C_LONG, &value, sizeof(value), &col_value_len);
618 - if (ret != SQL_SUCCESS) {
621 + if (netdata_mssql_check_result(ret)) {
622 netdata_MSSQL_error(
623 SQL_HANDLE_STMT, mdi->parent->conn->dbLocksSTMT, NETDATA_MSSQL_ODBC_PREPARE, mdi->parent->instanceID);
624 goto endlocks;
@@ -662,52 +665,52 @@ int dict_mssql_fill_waits(struct mssql_instance *mi)
665 col_max_wait_len = 0, col_waiting_tasks_len = 0, col_wait_category_len = 0;
666
667 SQLRETURN ret = SQLExecDirect(mi->conn->dbWaitsSTMT, (SQLCHAR *)NETDATA_QUERY_CHECK_WAITS, SQL_NTS);
665 - if (ret != SQL_SUCCESS) {
668 + if (netdata_mssql_check_result(ret)) {
669 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_QUERY, mi->instanceID);
670 goto endwait;
671 }
672
673 ret = SQLBindCol(mi->conn->dbWaitsSTMT, 1, SQL_C_CHAR, wait_type, sizeof(wait_type), &col_wait_type_len);
671 - if (ret != SQL_SUCCESS) {
674 + if (netdata_mssql_check_result(ret)) {
675 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
676 goto endwait;
677 }
678
679 ret = SQLBindCol(mi->conn->dbWaitsSTMT, 2, SQL_C_LONG, &total_wait, sizeof(total_wait), &col_total_wait_len);
677 - if (ret != SQL_SUCCESS) {
680 + if (netdata_mssql_check_result(ret)) {
681 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
682 goto endwait;
683 }
684
685 ret =
686 SQLBindCol(mi->conn->dbWaitsSTMT, 3, SQL_C_LONG, &resource_wait, sizeof(resource_wait), &col_resource_wait_len);
684 - if (ret != SQL_SUCCESS) {
687 + if (netdata_mssql_check_result(ret)) {
688 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
689 goto endwait;
690 }
691
692 ret = SQLBindCol(mi->conn->dbWaitsSTMT, 4, SQL_C_LONG, &signal_wait, sizeof(signal_wait), &col_signal_wait_len);
690 - if (ret != SQL_SUCCESS) {
693 + if (netdata_mssql_check_result(ret)) {
694 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
695 goto endwait;
696 }
697
698 ret = SQLBindCol(mi->conn->dbWaitsSTMT, 5, SQL_C_LONG, &max_wait, sizeof(max_wait), &col_max_wait_len);
696 - if (ret != SQL_SUCCESS) {
699 + if (netdata_mssql_check_result(ret)) {
700 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
701 goto endwait;
702 }
703
704 ret =
705 SQLBindCol(mi->conn->dbWaitsSTMT, 6, SQL_C_LONG, &waiting_tasks, sizeof(waiting_tasks), &col_waiting_tasks_len);
703 - if (ret != SQL_SUCCESS) {
706 + if (netdata_mssql_check_result(ret)) {
707 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
708 goto endwait;
709 }
710
711 ret =
712 SQLBindCol(mi->conn->dbWaitsSTMT, 7, SQL_C_CHAR, wait_category, sizeof(wait_category), &col_wait_category_len);
710 - if (ret != SQL_SUCCESS) {
713 + if (netdata_mssql_check_result(ret)) {
714 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
715 goto endwait;
716 }
@@ -786,7 +789,7 @@ long metdata_mssql_check_permission(struct mssql_instance *mi)
789 SQLRETURN ret;
790
791 ret = SQLExecDirect(mi->conn->checkPermSTMT, (SQLCHAR *)NETDATA_QUERY_CHECK_PERM, SQL_NTS);
789 - if (ret != SQL_SUCCESS) {
792 + if (netdata_mssql_check_result(ret)) {
793 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->checkPermSTMT, NETDATA_MSSQL_ODBC_QUERY, mi->instanceID);
794 perm = LONG_MAX;
795 goto endperm;
@@ -794,14 +797,14 @@ long metdata_mssql_check_permission(struct mssql_instance *mi)
797
798 ret = SQLBindCol(mi->conn->checkPermSTMT, 1, SQL_C_LONG, &perm, sizeof(perm), &col_data_len);
799
797 - if (ret != SQL_SUCCESS) {
800 + if (netdata_mssql_check_result(ret)) {
801 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->checkPermSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
802 perm = LONG_MAX;
803 goto endperm;
804 }
805
806 ret = SQLFetch(mi->conn->checkPermSTMT);
804 - if (ret != SQL_SUCCESS) {
807 + if (netdata_mssql_check_result(ret)) {
808 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->checkPermSTMT, NETDATA_MSSQL_ODBC_FETCH, mi->instanceID);
809 perm = LONG_MAX;
810 goto endperm;
@@ -829,19 +832,19 @@ void metdata_mssql_fill_mssql_status(struct mssql_instance *mi)
832 SQLRETURN ret;
833
834 ret = SQLExecDirect(mi->conn->dbSQLState, (SQLCHAR *)NETDATA_QUERY_DATABASE_STATUS, SQL_NTS);
832 - if (ret != SQL_SUCCESS) {
835 + if (netdata_mssql_check_result(ret)) {
836 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbSQLState, NETDATA_MSSQL_ODBC_QUERY, mi->instanceID);
837 goto enddbstate;
838 }
839
840 ret = SQLBindCol(mi->conn->dbSQLState, 1, SQL_C_TINYINT, &state, sizeof(state), &col_data_len);
838 - if (ret != SQL_SUCCESS) {
841 + if (netdata_mssql_check_result(ret)) {
842 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbSQLState, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
843 goto enddbstate;
844 }
845
846 ret = SQLBindCol(mi->conn->dbSQLState, 3, SQL_C_BIT, &readonly, sizeof(readonly), &col_data_len);
844 - if (ret != SQL_SUCCESS) {
847 + if (netdata_mssql_check_result(ret)) {
848 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbWaitsSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
849 goto enddbstate;
850 }
@@ -849,7 +852,7 @@ void metdata_mssql_fill_mssql_status(struct mssql_instance *mi)
852 int i = 0;
853 do {
854 ret = SQLFetch(mi->conn->dbSQLState);
852 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
855 + if (netdata_mssql_check_result(ret)) {
856 goto enddbstate;
857 }
858
@@ -882,26 +885,26 @@ void metdata_mssql_fill_job_status(struct mssql_instance *mi)
885 SQLRETURN ret;
886
887 ret = SQLExecDirect(mi->conn->dbSQLJobs, (SQLCHAR *)NETDATA_QUERY_JOBS_STATUS, SQL_NTS);
885 - if (ret != SQL_SUCCESS) {
888 + if (netdata_mssql_check_result(ret)) {
889 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbSQLJobs, NETDATA_MSSQL_ODBC_QUERY, mi->instanceID);
890 goto enddbjobs;
891 }
892
893 ret = SQLBindCol(mi->conn->dbSQLJobs, 1, SQL_C_CHAR, job, sizeof(job), &col_job_len);
891 - if (ret != SQL_SUCCESS) {
894 + if (netdata_mssql_check_result(ret)) {
895 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbSQLJobs, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
896 goto enddbjobs;
897 }
898
899 ret = SQLBindCol(mi->conn->dbSQLJobs, 2, SQL_C_TINYINT, &state, sizeof(state), &col_state_len);
897 - if (ret != SQL_SUCCESS) {
900 + if (netdata_mssql_check_result(ret)) {
901 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->dbSQLJobs, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
902 goto enddbjobs;
903 }
904
905 do {
906 ret = SQLFetch(mi->conn->dbSQLJobs);
904 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
907 + if (netdata_mssql_check_result(ret)) {
908 goto enddbjobs;
909 }
910
@@ -931,14 +934,14 @@ void metdata_mssql_fill_dictionary_from_db(struct mssql_instance *mi)
934 SQLRETURN ret;
935
936 ret = SQLExecDirect(mi->conn->databaseListSTMT, (SQLCHAR *)NETDATA_QUERY_LIST_DB, SQL_NTS);
934 - if (ret != SQL_SUCCESS) {
937 + if (netdata_mssql_check_result(ret)) {
938 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->databaseListSTMT, NETDATA_MSSQL_ODBC_QUERY, mi->instanceID);
939 goto enddblist;
940 }
941
942 ret = SQLBindCol(mi->conn->databaseListSTMT, 1, SQL_C_CHAR, dbname, sizeof(dbname), &col_data_len);
943
941 - if (ret != SQL_SUCCESS) {
944 + if (netdata_mssql_check_result(ret)) {
945 netdata_MSSQL_error(SQL_HANDLE_STMT, mi->conn->databaseListSTMT, NETDATA_MSSQL_ODBC_PREPARE, mi->instanceID);
946 goto enddblist;
947 }
@@ -946,7 +949,7 @@ void metdata_mssql_fill_dictionary_from_db(struct mssql_instance *mi)
949 int i = 0;
950 do {
951 ret = SQLFetch(mi->conn->databaseListSTMT);
949 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
952 + if (netdata_mssql_check_result(ret)) {
953 goto enddblist;
954 }
955
@@ -973,27 +976,27 @@ static bool netdata_MSSQL_initialize_connection(struct netdata_mssql_conn *nmc)
976 SQLRETURN ret;
977 if (nmc->netdataSQLEnv == NULL) {
978 ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &nmc->netdataSQLEnv);
976 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
979 + if (netdata_mssql_check_result(ret))
980 return FALSE;
981
982 ret = SQLSetEnvAttr(nmc->netdataSQLEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
980 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
983 + if (netdata_mssql_check_result(ret)) {
984 return FALSE;
985 }
986 }
987
988 ret = SQLAllocHandle(SQL_HANDLE_DBC, nmc->netdataSQLEnv, &nmc->netdataSQLHDBc);
986 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
989 + if (netdata_mssql_check_result(ret)) {
990 return FALSE;
991 }
992
993 ret = SQLSetConnectAttr(nmc->netdataSQLHDBc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);
991 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
994 + if (netdata_mssql_check_result(ret)) {
995 return FALSE;
996 }
997
998 ret = SQLSetConnectAttr(nmc->netdataSQLHDBc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)TRUE, 0);
996 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
999 + if (netdata_mssql_check_result(ret)) {
1000 return FALSE;
1001 }
1002
@@ -1020,55 +1023,55 @@ static bool netdata_MSSQL_initialize_connection(struct netdata_mssql_conn *nmc)
1023 SQLSetConnectAttr(nmc->netdataSQLHDBc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, 0);
1024
1025 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->checkPermSTMT);
1023 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1026 + if (netdata_mssql_check_result(ret)) {
1027 retConn = FALSE;
1028 goto endMSSQLInitializationConnection;
1029 }
1030
1031 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->databaseListSTMT);
1029 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1032 + if (netdata_mssql_check_result(ret)) {
1033 retConn = FALSE;
1034 goto endMSSQLInitializationConnection;
1035 }
1036
1037 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dataFileSizeSTMT);
1035 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1038 + if (netdata_mssql_check_result(ret)) {
1039 retConn = FALSE;
1040 goto endMSSQLInitializationConnection;
1041 }
1042
1043 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbTransactionSTMT);
1041 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1044 + if (netdata_mssql_check_result(ret)) {
1045 retConn = FALSE;
1046 goto endMSSQLInitializationConnection;
1047 }
1048
1049 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbInstanceTransactionSTMT);
1047 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1050 + if (netdata_mssql_check_result(ret)) {
1051 retConn = FALSE;
1052 goto endMSSQLInitializationConnection;
1053 }
1054
1055 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbLocksSTMT);
1053 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1056 + if (netdata_mssql_check_result(ret)) {
1057 retConn = FALSE;
1058 goto endMSSQLInitializationConnection;
1059 }
1060
1061 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbWaitsSTMT);
1059 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1062 + if (netdata_mssql_check_result(ret)) {
1063 retConn = FALSE;
1064 goto endMSSQLInitializationConnection;
1065 }
1066
1067 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbSQLState);
1065 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1068 + if (netdata_mssql_check_result(ret)) {
1069 retConn = FALSE;
1070 goto endMSSQLInitializationConnection;
1071 }
1072
1073 ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbSQLJobs);
1071 - if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
1074 + if (netdata_mssql_check_result(ret)) {
1075 retConn = FALSE;
1076 goto endMSSQLInitializationConnection;
1077 }