Relembre os dias felizes da sua infância quando a sopa de letras era a sua refeição divertida. Mantenha estes pensamentos felizes em mente à medida que provamos um pouco da versão de base de dados da sopa de letras. As secções seguintes explicam as noções básicas sobre como chegar a uma base de dados com cadeias de ligação e como utilizar uma interface de programação de base de dados no seu código VBA do Access.
Neste Artigo
Utilizar um controlador ODBC ou o fornecedor OLE DB
Interface programática para SQL Server a partir do Access
Resumo das versões de controladores ODBC
Resumo das versões de fornecedor OLE DB
Utilizar um controlador ODBC ou o fornecedor OLE DB
As cadeias de ligação já existem há bastante tempo. Pode definir uma cadeia de ligação formatada na interface de utilizador do Access ou em código VBA. Uma cadeia de ligação (quer seja ODBC ou OLE DB) passa informações diretamente para a base de dados, como a localização do servidor, o nome da base de dados, o tipo de segurança e outras opções úteis. Por exemplo:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
Inicialmente, o SQL Server Native Client (SNAC) era uma biblioteca autónoma que continha tecnologias ODBC e OLEDB e ainda está disponível para as versões de 2005 a 2012 do SQL Server. Muitas aplicações legadas usavam o SNAC e ainda são suportadas por questões de compatibilidade com versões anteriores, mas não recomendamos que a utilize para o desenvolvimento de novas aplicações. Deve utilizar versões individuais mais recentes e transferíveis dos controladores ODBC.
Controladores ODBC
O ODBC (Open Database Connectivity) é um protocolo que pode utilizar para ligar uma base de dados do Access a uma origem de dados externa, como o Microsoft SQL Server. Normalmente, as origens de dados de ficheiros (também denominadas ficheiros DSN) são utilizadas para adicionar uma cadeia de ligação e, nesse caso, a palavra-chave FILEDSN é utilizada na cadeia de ligação ou armazenada no registo e, nesse caso, é utilizada a palavra-chave DSN. Em alternativa, pode utilizar o VBA para definir estas propriedades através de uma cadeia de ligação "sem DSN".
Ao longo dos anos, os controladores ODBC foram enviados em três fases:
-
Antes de 2005, os controladores ODBC eram enviados com o Windows Data Access Components (WDAC), que eram originalmente denominados Microsoft Data Access Components (MDAC). Estes componentes ainda são enviados com o Windows por questões de compatibilidade com versões anteriores. Para obter mais informações, consulte Microsoft ou Windows Data Access Components.
-
Controladores ODBC enviados com o SNAC para o SQL Server 2005 a SQL Server 2012.
-
Após o SQL Server 2012, os controladores ODBC foram enviados individualmente e contêm suporte para novas funcionalidades do SQL Server.
Para novo desenvolvimento, evite utilizar os controladores ODBC das duas primeiras fases e utilize os controladores ODBC da terceira fase.
Fornecedores OLE DB
O OLE DB (Object Linking and Embedding, Database) é um protocolo mais recente que pode utilizar para ligar uma base de dados do Access a uma origem de dados externa, como o Microsoft SQL Server. O OLE DB não necessita de um DSN e também fornece acesso completo às origens de dados ODBC e aos controladores ODBC.
Sugestão Normalmente, pode utilizar a caixa de diálogo Propriedades de Ligação de Dados para adicionar uma cadeia de ligação OLE DB. Apesar de não ser possível abrir a caixa de diálogo Propriedades de Ligação de Dados a partir do Access, no Explorador do Windows, pode criar um ficheiro .txt vazio, alterar o tipo de ficheiro para .udl e, em seguida, fazer duplo clique no ficheiro. Depois de criar uma cadeia de ligação, altere o tipo de ficheiro de volta para .txt.
Ao longo dos anos, os fornecedores OLE DB foram enviados em três fases:
-
Antes de 2005, os fornecedores OLE DB eram enviados com o Windows Data Access Components (WDAC), que eram originalmente denominados Microsoft Data Access Components (MDAC).
-
Fornecedores OLE DB enviados com o SQL Server 2005 a SQL Server 2017. Foi preterido em 2011.
-
Em 2017, o fornecedor OLE DB do SQL Server deixou de estar preterido.
A versão recomendada atualmente para o desenvolvimento de novas soluções é o OLE DB Driver 18 para SQL Server.
Como otimizar o desempenho com uma cadeia de ligação ODBC
Para otimizar o desempenho, minimizar o tráfego de rede e reduzir o acesso de múltiplos utilizadores à base de dados do SQL Server, utilize o mínimo de cadeias de ligação possível ao partilhar cadeias de ligação em múltiplos conjuntos de registos. Apesar de o Ace simplesmente transmitir uma cadeia de ligação para o servidor, este irá compreender e utilizar as seguintes palavras-chave: DSN, DATABASE, UID, PWD, e DRIVER para ajudar a minimizar a comunicação entre cliente e servidor.
Nota Se for perdida uma ligação ODBC a uma origem de dados externa, o Access tenta restabelecer automaticamente a ligação à mesma. Se a tentativa tiver êxito, poderá continuar a trabalhar. Se a tentativa falhar, pode continuar a trabalhar com objetos que não dependam da ligação. Para voltar a ligar, feche e abra novamente o Access.
Recomendações ao utilizar ODBC e OLE DB
Evite misturar cadeias de ligação e tecnologias de acesso à base de dados. Utilize uma cadeia de ligação ODBC para o DAO. Utilize uma cadeia de ligação OLE DB para o ADO. Se a aplicação contiver código VBA que utilize tanto DAO como ADO, utilize o controlador ODBC para o DAO e o fornecedor OLE DB para o ADO. Esteja empenhado em obter as funcionalidades e suportes mais recentes para o ODBC e para o OLEDB respectivamente.
O ODBC utiliza o termo controlador e OLE DB utiliza o termo fornecedor. Os termos descrevem o mesmo tipo de componente de software, mas não são intercambiáveis na sintaxe da cadeia de ligação. Utilize o valor correto conforme documentado.
Interface programática para SQL Server a partir do Access
Existem duas formas principais de interface programática para uma base de dados do SQL Server a partir do Access.
DAO
Um objeto de acesso a dados (DAO) fornece uma interface abstrata para uma base de dados. O Microsoft Data Access Objects (DAO) é o modelo de objeto de programação nativa que lhe permite usufruir ao máximo do Access e do SQL Server para criar, eliminar, modificar e listar objetos, tabelas, campos, índices, relações, consultas, propriedades e bases de dados externas.
Para obter mais informações, consulte Microsoft Data Access Objects.
ADO
O ActiveX Data Objects (ADO) fornece um modelo de programação de alto nível e está disponível no Access através de uma referência a uma biblioteca de terceiros. O ADO é simples de aprender e permite às aplicações cliente aceder e manipular dados a partir de uma variedade de origens, incluindo o Access e o SQL Server. Os seus principais benefícios são facilidade de utilização, alta velocidade, sobrecarga de memória baixa e ocupar pouco espaço no disco. O ADO também suporta funcionalidades chave de criação e de aplicações baseadas na Web.
Para obter mais informações, consulte a referência do Microsoft ActiveX Data Objects e o Microsoft ActiveX Data Objects (ADO).
Qual deles deverá utilizar?
Numa solução do Access que utilize o código VBA, pode utilizar o DAO, o ADO ou ambos como a sua tecnologia de interface de base de dados. O DAO continua a ser o predefinido no Access. Por exemplo, todos os formulários, relatórios e consultas do Access utilizam o DAO. Mas quando migra para o SQL Server, considere usar o ADO para tornar a sua solução mais eficiente. Eis algumas diretrizes gerais para o ajudar a decidir quando utilizar o DAO ou o ADO.
Utilize o DAO quando pretender:
-
Criar um formulário de associação de leitura/escrita sem utilizar o VBA.
-
Consultar tabelas locais.
-
Transferir dados para tabelas temporárias.
-
Utilizar consultas pass-through como origens de dados para relatórios ou formulários no modo só de leitura.
-
Definir e utilizar um objeto TableDef ou Querydef no VBA.
Utilize o ADO quando pretender:
-
Tirar partido de formas adicionais para a otimização, como efetuar operações assíncronas.
-
Executar consultas pass-through de DDL e de DML.
-
Obter dados do SQL Server diretamente através de conjuntos de registos no VBA.
-
Escrever código mais simples para determinadas tarefas, tais como a transmissão de Blobs.
-
Chamar um procedimento armazenado diretamente, com parâmetros, através de um objeto de comando no VBA.
Resumo das versões de controladores ODBC
A seguinte tabela resume informações importantes sobre as versões de controladores ODBC, localizações de transferências e suporte de funcionalidades. Certifique-se de que utiliza a versão de bits correta (64 bits ou 32 bits) do controlador baseada no Windows e não no Office. Se estiver a executar a versão de 32 bits do Access na versão de 64 bits do Windows, instale os controladores de 64 bits, que incluem os componentes de 32 bits necessários para o Access.
Para obter mais informações, consulte Utilizar Palavras-Chave de Cadeia de Ligação com o SQL Server Native Client, Notas de Versão do ODBC para o SQL Server no Windows (v17) e Funcionalidades do Microsoft ODBC Driver para SQL Server no Windows (v13,11).
Resumo das versões de fornecedor OLE DB
A seguinte tabela resume informações importantes sobre as versões de fornecedores OLE DB, localizações de transferências e suporte de funcionalidades. Certifique-se de que utiliza a versão de bits correta (64 bits ou 32 bits) do controlador baseada no Windows e não no Office. Se estiver a executar a versão de 32 bits do Access na versão de 64 bits do Windows, instale os controladores de 64 bits, que incluem os componentes de 32 bits necessários para o Access.
Para obter mais informações, consulte Utilizar Palavras-Chave de Cadeia de Ligação com o SQL Server Native Client.
Fornecedor OLE DB |
Versão |
Transferir |
Novas funcionalidades |
OLE DB Driver 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
Consulte a Funcionalidade OLE DB Driver para SQL Server e as Notas de versão do Microsoft OLE DB Driver para SQL Server |
|
SQL Server Native Client (SQLNCLI) |
SQL Server 2005 a 2012 |
Preterido, não utilize |
|
OLE DB Driver (SQLOLEDB) |
Preterido, não utilize |
Resumo de palavras-chave do ODBC
A seguinte tabela resume as palavras-chave do ODBC reconhecidas pelo SQL Server e o objetivo delas. Apenas um subconjunto é reconhecido pelo Access.
Palavra-chave |
Descrição |
Addr |
O endereço de rede do servidor que executa uma instância do SQL Server. |
AnsiNPW |
Especifica a utilização de comportamentos definidos por ANSI para lidar com comparações de valores NULL, caracteres de preenchimento de dados, avisos e concatenação de valores NULL (Sim ou Não). |
APP |
Nome da aplicação que chama SQLDriverConnect. |
ApplicationIntent |
Declara o tipo de carga de trabalho da aplicação ao ligar a um servidor (ReadOnly ou ReadWrite). |
AttachDBFileName |
Nome do ficheiro principal de uma base de dados anexada. |
AutoTranslate |
Especifica se as cadeias de carateres ANSI são enviadas entre o cliente ou servidor ou traduzidas para Unicode (Sim ou Não). |
Base de dados |
Nome da base de dados. Descrição O objetivo da ligação. Controlador Nome do controlador tal como devolvido por SQLDrivers. |
DSN |
Nome de um utilizador ou origem de dados do sistema ODBC existente. Encriptar Especifica se os dados devem ser encriptados antes de os enviar através da rede (Sim ou Não). |
Failover_Partner |
Nome do servidor parceiro de ativação pós-falha a ser utilizado se não for possível efetuar uma ligação ao servidor principal. |
FailoverPartnerSPN |
O SPN do parceiro de ativação pós-falha. |
Fallback |
Palavra-chave preterida. |
FileDSN |
Nome de uma origem de dados do ficheiro ODBC existente. Linguagem A linguagem do SQL Server. |
MARS_Connection |
Especifica múltiplos conjuntos de resultados ativos (MARS) na ligação para o SQL Server 2005 (9.x) ou posterior (Sim ou Não). |
MultiSubnetFailover |
Especifica se deve ligar ao serviço de escuta do grupo de disponibilidade de um grupo de disponibilidade do SQL Server ou uma Instância do Cluster de Ativação Pós-falha (Sim ou não). |
Net |
dbnmpntw indica pipes com nomes e dbmssocn indica TCP/IP. |
PWD |
Palavra-passe de início de sessão do SQL Server. |
QueryLog_On |
Especifica o registo das consultas de execução longa (Sim ou Não). |
QueryLogFile |
Caminho completo e nome de ficheiro de um ficheiro para utilizar para registar dados em consultas de execução longa. |
QueryLogTime |
Cadeia de carateres de dígitos que especifica o limiar (em milissegundos) para o registo de consultas de execução longa. |
QuotedId |
Especifica se o SQL Server utiliza as regras ISO relativamente à utilização de aspas nas instruções SQL (Sim ou Não). |
Regional |
Especifica se o controlador ODBC do SQL Server Native Client utiliza as definições do cliente ao converter dados de moeda, data ou hora em dados de carateres (Sim ou Não). |
SaveFile |
Nome de um ficheiro de origem de dados ODBC no qual os atributos da ligação atual são guardados se a ligação for efetuada com êxito. |
Servidor |
O nome de uma instância do SQL Server: Servidor na rede, um endereço IP ou um alias do Configuration Manager. |
ServerSPN |
O SPN para o servidor. |
StatsLog_On |
Ativa a captura de dados de desempenho de controladores ODBC do SQL Server Native Client. |
StatsLogFile |
Caminho completo e nome de ficheiro de um ficheiro utilizado para registar estatísticas de desempenho do controlador ODBC do SQL Server Native Client. |
Trusted_Connection |
Especifica se o Modo de Autenticação do Windows ou o nome de utilizador ou palavra-passe do SQL Server é utilizado para validação da sessão (Sim ou Não). |
TrustServerCertificate |
Quando utilizado com Encriptar, ativa a encriptação através de um certificado de servidor auto-assinado. |
UID |
O nome de início de sessão do SQL Server. |
UseProcForPrepare |
Palavra-chave preterida. |
WSID |
O identificador de estação de trabalho, o nome de rede do computador onde se encontra a aplicação. |
Resumo de palavras-chave do OLE DB
A seguinte tabela resume as palavras-chave do OLE DB reconhecidas pelo SQL Server e o objetivo delas. Apenas um subconjunto é reconhecido pelo Access.
Palavra-chave |
Descrição |
Addr |
O endereço de rede do servidor que executa uma instância do SQL Server. |
APP |
A cadeia que identifica a aplicação. |
ApplicationIntent |
Declara o tipo de carga de trabalho da aplicação ao ligar a um servidor (ReadOnly ou ReadWrite). |
AttachDBFileName |
Nome do ficheiro principal de uma base de dados anexada. |
AutoTranslate |
Configura a tradução de carateres OEM/ANSI (Verdadeiro ou Falso). |
Tempo limite da ligação |
O período de tempo (em segundos) para aguardar a conclusão da inicialização da origem de dados. |
Linguagem atual |
A nome da linguagem do SQL Server. |
Origem de Dados |
O nome de uma instância do SQL Server na organização. |
Base de dados |
Nome da base de dados. |
DataTypeCompatibility |
Um número que indica o modo de manipulação do tipo de dados que será utilizado. |
Encriptar |
Especifica se os dados devem ser encriptados antes de os enviar através da rede (Sim ou Não). |
FailoverPartner |
O nome do servidor de ativação pós-falha utilizado para o espelhamento de base de dados. |
FailoverPartnerSPN |
O SPN do parceiro de ativação pós-falha. |
Catálogo Inicial |
Nome da base de dados. |
Nome de Ficheiro Inicial |
O nome do ficheiro principal (inclua o nome do caminho completo) de uma base de dados anexada. |
Segurança Integrada |
Utilizado para a Autenticação do Windows (SSPI). |
Linguagem |
A linguagem do SQL Server. |
MarsConn |
Especifica múltiplos conjuntos de resultados ativos (MARS) na ligação para o SQL Server 2005 (9.x) ou posterior (Sim ou Não). |
Net |
A biblioteca de rede utilizada para estabelecer uma ligação a uma instância do SQL Server na organização. |
Endereço de Rede |
O endereço de rede de uma instância do SQL Server na organização. |
PacketSize |
Tamanho do pacote de rede. O predefinido é 4096. |
Informação de Persistir Segurança |
Especifica se Persistir Segurança está ativado (Verdadeiro ou Falso). |
PersistSensitive |
Especifica se persistir sensitivo está ativado (Verdadeiro ou Falso). |
Fornecedor |
Para o SQL Server Native Client, deve ser SQLNCLI11. |
PWD |
Palavra-passe de início de sessão do SQL Server. |
Servidor |
O nome de uma instância do SQL Server: Servidor na rede, um endereço IP ou um alias do Configuration Manager. |
ServerSPN |
O SPN para o servidor. |
Tempo limite |
O período de tempo (em segundos) para aguardar a conclusão da inicialização da origem de dados. |
Trusted_Connection |
Especifica se o Modo de Autenticação do Windows ou o nome de utilizador ou palavra-passe do SQL Server é utilizado para validação da sessão (Sim ou Não). |
TrustServerCertificate |
Especifica se um certificado de servidor é validado (Verdadeiro ou Falso). |
UID |
O nome de início de sessão do SQL Server. |
Utilizar Encriptação para dados |
Especifica se os dados devem ser encriptados antes de os enviar através da rede (Verdadeiro ou Falso). |
UseProcForPrepare |
Palavra-chave preterida. |
WSID |
O identificador de estação de trabalho, o nome de rede do computador onde se encontra a aplicação. |