Espelhamento de Banco de Dados usando Microsoft ODBC Driver 11 for SQL Server

Exemplo de string de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server

Exemplo de string de conexão

Essa é uma string de conexão do provider Microsoft ODBC Driver 11 for SQL Server para se conectar com SQL Server 2014, SQL Server 2012, SQL Server 2008 ou SQL Server 2005.

Espelhamento de Banco de Dados

Se você se conectar a um banco de dados que está sendo espelhado, sua aplicação pode aproveitar a capacidade do driver de redirecionar automaticamente as conexões quando ocorre uma falha no espelhamento do banco de dados. Você deve especificar o servidor principal inicial e o banco de dados na string de conexão e o servidor parceiro de failover.

Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;

Este funciona apenas no Windows, não no macOS ou Linux. Existem, claro, muitas outras maneiras de escrever a string de conexão usando o espelhamento de banco de dados, este é apenas um exemplo destacando a funcionalidade de failover. Você pode combinar isso com as outras opções de string de conexão disponíveis.

Note que se você estiver usando TCP/IP (usando o parâmetro de biblioteca de rede) e espelhamento de banco de dados, incluindo o número da porta no endereço (formado como Servidor,Porta) para o servidor principal e o parceiro de failover pode resolver alguns problemas relatados.

Conexão através de diferentes linguagens

C#

Exemplo de código em C# de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

using System;
using System.Data.Odbc;

class DatabaseConnection {
    static void Main() {
        // Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server
        string connectionString = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;";

        using (OdbcConnection connection = new OdbcConnection(connectionString)) {
            try {
                // Abre a conexão
                connection.Open();

                Console.WriteLine("Conexão aberta com sucesso!");

                //
                // INSIRA SEU CÓDIGO AQUI
                //

            } catch (OdbcException ex) {
                // Erros específicos do OdbcException
                Console.WriteLine("Erro: " + ex.Message);
            } catch (Exception ex) {
                // Outros erros
                Console.WriteLine("Erro: " + ex.Message);            

            } finally {
                // Fecha a conexão
                if (connection != null) {
                    connection.Close();
                    Console.WriteLine("Conexão fechada.");
                }
            }
        }
    }
}

VB.NET

Exemplo de código em VB.NET de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

Imports System
Imports System.Data.Odbc

Module DatabaseConnection

    Sub Main()
        Dim connectionString As String
        
        ' Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server
        connectionString = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;"

        Using connection As New OdbcConnection(connectionString)
            Try
                ' Abre a conexão
                connection.Open()

                Console.WriteLine("Conexão aberta com sucesso!")

                '
                ' INSIRA SEU CÓDIGO AQUI
                '

            Catch ex As OdbcException
                ' Erros específicos do OdbcException
                Console.WriteLine("Erro: " & ex.Message)
            Catch ex As Exception
                ' Outros erros
                Console.WriteLine("Erro: " & ex.Message)
            Finally
                ' Fecha a conexão
                If connection IsNot Nothing Then
                    connection.Close()
                    Console.WriteLine("Conexão fechada.")
                End If
            End Try


        End Using
    End Sub

End Module

Node.js

Exemplo de código em Node.js de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

const odbc = require('odbc');

// Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server
const connectionString = 'Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;';

try {
  // Abre a conexão
  odbc.connect(connectionString, (error, connection) => {
    if (error) {
      console.error('Erro:', error.message);
      return;
    }

    console.log('Conexão aberta com sucesso!');

    //
    // INSIRA SEU CÓDIGO AQUI
    //

    // Fecha a conexão
    connection.close((error) => {
      if (error) {
        console.error('Erro ao fechar a conexão:', error.message);
        return;
      }

      console.log('Conexão fechada com sucesso!');
    });
  });
} catch (error) {
  console.error('Erro geral:', error.message);
}

Este código requer que você instale o módulo odbc através do seguinte comando:

npm install odbc

PHP

Exemplo de código em PHP de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

<?php
// Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server
$connectionString = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;";

try {
    // Abre a conexão usando PDO ODBC
    $pdo = new PDO("odbc:" . $connectionString);

    //
    // INSIRA SEU CÓDIGO AQUI
    //

    // Fecha a conexão
    $pdo = null;
} catch (PDOException $e) {
    // Trata erros de conexão ou exceções
    echo "Erro: " . $e->getMessage();
}
?>

Importante: o código acima funciona apenas no PHP para Windows com PDO_ODBC ativado. Para ativar este driver PDO, basta editar o arquivo php.ini e incluir a linha extension=php_pdo_odbc.dll após a linha extension=php_pdo.dll.

Python

Exemplo de código em Python de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

import pyodbc

# Define a string de conexão ODBC para SQL Server usando Microsoft ODBC Driver 11 for SQL Server
connectionString = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;"

try:
    # Abre a conexão
    connection = pyodbc.connect(connectionString)

    print("Conexão aberta com sucesso!")

    #
    # INSIRA SEU CÓDIGO AQUI
    #

except pyodbc.Error as e:
    print("Erro: ", e)

finally:
    # Fecha a conexão
    if connection:
        connection.close()

Este código requer que você instale o módulo pyodbc através do seguinte comando:

pip install pyodbc

ASP Clássico

Exemplo de código em ASP Clássico de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

<%
Dim conn, connectionString

' Cria a string de conexão para SQL Server usando Microsoft ODBC Driver 11 for SQL Server
connectionString = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;"

Set conn = Server.CreateObject("ADODB.Connection")

' Abre a conexão
On Error Resume Next
conn.Open connectionString

' Verifica se a conexão foi aberta
If conn.State = 1 Then
    Response.Write "Conexão aberta com sucesso!"
    '
    ' INSIRA SEU CÓDIGO AQUI
    '
Else
    If Err.Number <> 0 Then
        Response.Write "Erro: " & Server.HTMLEncode(Err.Description)
    Else
        Response.Write "Erro: A conexão não pode ser estabelecida."
    End If

End If

On Error GoTo 0

' Fecha a conexão
conn.Close
Set conn = Nothing

%>

VBScript

Exemplo de código em VBScript de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

Dim conn, connectionString

' Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server
connectionString = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;"

Set conn = CreateObject("ADODB.Connection")

' Abre a conexão
On Error Resume Next
conn.Open connectionString

' Verifica se a conexão foi aberta
If conn.State = 1 Then
    Wscript.Echo "Conexão aberta com sucesso!"
    '
    ' INSIRA SEU CÓDIGO AQUI
    '
Else
    If Err.Number <> 0 Then
        WScript.Echo "Erro: " & Err.Description
    Else
        WScript.Echo "Erro: A conexão não pode ser estabelecida."
    End If

End If

On Error GoTo 0

' Fecha a conexão
conn.Close
Set conn = Nothing
Wscript.Echo "Conexão fechada."

JScript

Exemplo de código em JScript de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

var conn, connectionString;

// Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server
connectionString = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;";

conn = new ActiveXObject("ADODB.Connection");

// Abre a conexão
try {
    // Abre a conexão
    conn.Open(connectionString);
    if (conn.State === 1) {
        WScript.Echo("Conexão aberta com sucesso!");
        //
        // INSIRA SEU CÓDIGO AQUI
        //
    } else {
        WScript.Echo("Erro: A conexão não pode ser estabelecida.");
    }
} catch (e) {
    // Exibe a mensagem de erro
    WScript.Echo("Erro: " + e.description);
} finally {
    // Fecha a conexão
    conn.Close();
    conn = null;
}

C++

Exemplo de código em C++ de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

#include <iostream>
#include <cstdlib>
#include <string>
#include <sql.h>
#include <sqlext.h>

int main() {
    // Inicializa o ambiente ODBC
    SQLHENV env = SQL_NULL_HENV;   // Handle do ambiente ODBC
    SQLHDBC dbc = SQL_NULL_HDBC;   // Handle da conexão ODBC
    SQLRETURN ret;                 // Status de retorno ODBC
    SQLWCHAR outstr[1024];         // String de saída para resultados ODBC
    SQLSMALLINT outstrlen;         // Contador de caracteres para resultados ODBC

    // Aloca um ambiente de manipulação ODBC
    ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
    if (ret == SQL_ERROR) {
        std::cout << "Erro ao alocar o ambiente ODBC." << std::endl;
        return EXIT_FAILURE;
    }

    // Define a versão ODBC para a mais recente disponível
    SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);

    // Aloca um handle de conexão
    ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
    if (ret == SQL_ERROR) {
        std::cout << "Erro ao alocar o handle de conexão ODBC." << std::endl;
        SQLFreeHandle(SQL_HANDLE_ENV, env);
        return EXIT_FAILURE;
    }

    // Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server
    std::wstring connectionString = L"Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;";

    // Tenta conectar usando a string de conexão
    ret = SQLDriverConnectW(dbc, NULL, (SQLWCHAR*)connectionString.c_str(), SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_COMPLETE);
    if (SQL_SUCCEEDED(ret)) {
        std::cout << "Conexão aberta com sucesso!" << std::endl;

        //
        // INSIRA SEU CÓDIGO AQUI
        //

        // Desconecta do banco de dados
        SQLDisconnect(dbc);
    } else {
        std::cout << "Falha ao abrir conexão." << std::endl;
    }

    // Libera os handles alocados
    SQLFreeHandle(SQL_HANDLE_DBC, dbc);
    SQLFreeHandle(SQL_HANDLE_ENV, env);

    return EXIT_SUCCESS;
}

Perl

Exemplo de código em Perl de conexão com SQL Server usando Microsoft ODBC Driver 11 for SQL Server:

use strict;
use warnings;
use DBI;

# Define a string de conexão SQL Server usando Microsoft ODBC Driver 11 for SQL Server 
my $connection_string = "Driver={ODBC Driver 11 for SQL Server};Server=Servidor;Failover_Partner=Servidor2;Database=BancoDeDados;Trusted_Connection=yes;";

eval {
    # Abre a conexão
    my $dbh = DBI->connect("DBI:ODBC:$connection_string", undef, undef, { PrintError => 0, RaiseError => 1 });
    print "Conexão aberta com sucesso!\n";

    #
    # INSIRA SEU CÓDIGO AQUI
    #

    # Fecha a conexão
    $dbh->disconnect;
};

if ($@) {
    print "Erro: $@\n";
}