Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Depois de alocar os controlos do ambiente e da ligação e definir quaisquer atributos de ligação, a aplicação liga-se à fonte de dados ou ao driver. Existem três funções que pode usar para se ligar:
SQLConnect
SQLDriverConnect
SQLBrowseConnect
Para mais informações sobre como fazer ligações a uma fonte de dados, incluindo as várias opções de cadeia de ligação disponíveis, consulte Using Connection String Keywords with SQL Server Native Client.
SQLConnect
O SQLConnect é a função de ligação mais simples. Aceita três parâmetros: um nome da fonte de dados, um ID de utilizador e uma palavra-passe. Use o SQLConnect quando estes três parâmetros contêm toda a informação necessária para se ligar à base de dados. Para isso, constrói uma lista de fontes de dados usando SQLDataSources; pedir ao utilizador uma fonte de dados, ID de utilizador e palavra-passe; e depois chamar SQLConnect.
O SQLConnect assume que um nome da fonte de dados, ID de utilizador e palavra-passe são suficientes para se ligar a uma fonte de dados e que a fonte de dados ODBC contém toda a outra informação que o driver ODBC necessita para fazer a ligação. Ao contrário do SQLDriverConnect e SQLBrowseConnect, o SQLConnect não utiliza uma cadeia de ligação.
SQLDriverConnect
O SQLDriverConnect é utilizado quando é necessária mais informação do que o nome da fonte de dados, ID de utilizador e palavra-passe. Um dos parâmetros do SQLDriverConnect é uma cadeia de ligação que contém informação específica do driver. Pode usar SQLDriverConnect em vez de SQLConnect pelas seguintes razões:
Para especificar informações específicas do condutor no momento da ligação.
Pedir ao driver que solicite ao utilizador informações de ligação.
Para se ligar sem usar uma fonte de dados ODBC.
A cadeia de ligação SQLDriverConnect contém uma série de pares palavra-chave que especificam toda a informação de ligação suportada por um driver ODBC. Cada driver suporta as palavras-chave padrão ODBC (DSN, FILEDSN, DRIVER, UID, PWD e SAVEFILE), além de palavras-chave específicas do driver para toda a informação de ligação suportada pelo driver. O SQLDriverConnect pode ser usado para se ligar sem uma fonte de dados. Por exemplo, uma aplicação concebida para criar uma ligação "sem DSN" a uma instância do SQL Server pode chamar o SQLDriverConnect com uma cadeia de ligação que define o ID de login, palavra-passe, biblioteca de rede, nome do servidor a que se ligar e base de dados padrão a utilizar.
Ao usar o SQLDriverConnect, existem duas opções para pedir ao utilizador qualquer informação de ligação necessária:
Caixa de diálogo de aplicação
Podes criar uma caixa de diálogo de aplicação que pede informações de ligação e depois chama o SQLDriverConnect com um handle de janela NULL e o DriverCompletion definido para SQL_DRIVER_NOPROMPT. Estas definições de parâmetros impedem o driver ODBC de abrir a sua própria caixa de diálogo. Este método é utilizado quando é importante controlar a interface de utilizador da aplicação.
Caixa de diálogo do condutor
Podes programar a aplicação para passar um handle de janela válido ao SQLDriverConnect e definir o parâmetro DriverCompletion para SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT ou SQL_DRIVER_COMPLETE_REQUIRED. O driver gera então uma caixa de diálogo para pedir ao utilizador informações de ligação. Este método simplifica o código da aplicação.
SQLBrowseConnect
O SQLBrowseConnect, tal como o SQLDriverConnect, usa uma cadeia de ligação. No entanto, ao usar SQLBrowseConnect, uma aplicação pode construir iterativamente uma cadeia de ligação completa com a fonte de dados em tempo de execução. Isto permite que a aplicação faça duas funções:
Construir as suas próprias caixas de diálogo para pedir esta informação, mantendo assim o controlo sobre a interface de utilizador.
Navegue pelo sistema à procura de fontes de dados que possam ser usadas por um determinado condutor, possivelmente em vários passos.
Por exemplo, o utilizador pode primeiro navegar na rede à procura de servidores e, depois de escolher um servidor, navegar pelo servidor à procura de bases de dados acessíveis pelo driver.
Quando o SQLBrowseConnect conclui uma ligação bem-sucedida, devolve uma cadeia de ligação que pode ser usada em chamadas subsequentes ao SQLDriverConnect.
O driver ODBC SQL Server Native Client retorna sempre SQL_SUCCESS_WITH_INFO num SQLConnect, SQLDriverConnect ou SQLBrowseConnect bem-sucedido. Quando uma aplicação ODBC chama SQLGetDiagRec após receber SQL_SUCCESS_WITH_INFO, pode receber as seguintes mensagens:
5701
Indica que o SQL Server colocou o contexto do utilizador na base de dados padrão definida na fonte de dados, ou na base de dados padrão definida para o ID de login usado na ligação caso a fonte de dados não tivesse uma base de dados predefinida.
5703
Indica a linguagem usada no servidor.
O exemplo seguinte mostra a mensagem devolvida numa ligação bem-sucedida pelo administrador do sistema:
szSqlState = "01000", *pfNativeError = 5701,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
Changed database context to 'pubs'."
szSqlState = "01000", *pfNativeError = 5703,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
Changed language setting to 'us_english'."
Pode ignorar as mensagens 5701 e 5703; São apenas informativos. No entanto, não deve ignorar um código de retorno SQL_SUCCESS_WITH_INFO porque mensagens que não sejam 5701 ou 5703 podem ser devolvidas. Por exemplo, se um driver se liga a um servidor a correr uma instância de SQL Server com procedimentos armazenados de catálogo desatualizados, um dos erros devolvidos através do SQLGetDiagRec após um SQL_SUCCESS_WITH_INFO é:
SqlState: 01000
pfNative: 0
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC
catalog stored procedures installed on server
my65server are version 06.50.0193; version 07.00.0205
or later is required to ensure proper operation.
Please contact your system administrator."
A função de gestão de erros de uma aplicação para ligações SQL Server deve chamar SQLGetDiagRec até que este retorne SQL_NO_DATA. Deverá então agir sobre quaisquer mensagens que não sejam aquelas com código pfNative 5701 ou 5703.