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)
O driver ODBC do SQL Server Native Client não suporta o modelo misto de cursor (keyset/dinámico). As tentativas de definir o tamanho do conjunto de chaves usando SQL_ATTR_KEYSET_SIZE falharão se o conjunto de valores não for igual a 0.
A aplicação define SQL_ATTR_ROW_ARRAY_SIZE em todas as instruções para declarar o número de linhas retornadas numa chamada de função SQLFetch ou SQLFetchScroll . Nas instruções que indicam um cursor do servidor, o driver usa SQL_ATTR_ROW_ARRAY_SIZE para determinar o tamanho do bloco de linhas que o servidor gera para satisfazer um pedido de busca do cursor. Dentro do tamanho do bloco de um cursor dinâmico, a pertença e ordenação das linhas são fixas se o nível de isolamento das transações for suficiente para garantir leituras repetíveis das transações comprometidas. O cursor é completamente dinâmico fora do bloco indicado por este valor. O tamanho do bloco do cursor do servidor é completamente dinâmico e pode ser alterado a qualquer momento do processamento de fetch.
SQLSetStmtAttr e parâmetros Table-Valued
O SQLSetStmtAttr pode ser usado para definir SQL_SOPT_SS_PARAM_FOCUS no descritor de parâmetros de aplicação (APD) antes de aceder a campos de descritores para colunas de parâmetros com valores de tabela.
Se for feita uma tentativa de definir SQL_SOPT_SS_PARAM_FOCUS para o ordinal de um parâmetro que não seja um parâmetro com valor de tabela, SQLSetStmtAttr devolve SQL_ERROR e é criado um registo de diagnóstico com SQLSTATE = HY024 e a mensagem "Valor do atributo inválido". SQL_SOPT_SS_PARAM_FOCUS não é alterado quando SQL_ERROR é devolvido.
Definir SQL_SOPT_SS_PARAM_FOCUS para 0 restaura o acesso aos registos de descritores para parâmetros.
SQLSetStmtAttr também pode ser usado para definir SQL_SOPT_SS_NAME_SCOPE. Para mais informações, consulte a secção SQL_SOPT_SS_NAME_SCOPE, mais adiante neste tópico.
Para mais informações, consulte Table-Valued Metadados de Parâmetros para Declarações Preparadas.
Para mais informações sobre parâmetros com valores de tabela, veja Table-Valued Parâmetros (ODBC).
Suporte SQLSetStmtAttr para colunas esparsas
O SQLSetStmtAttr pode ser usado para definir SQL_SOPT_SS_NAME_SCOPE. Para mais informações, consulte a secção SQL_SOPT_SS_NAME_SCOPE, mais adiante neste tópico. Para mais informações sobre colunas esparsas, veja Suporte a Colunas Esparsas (ODBC).
Atributos da declaração
O driver ODBC do SQL Server Native Client também suporta os seguintes atributos específicos de instruções do driver.
SQL_SOPT_SS_CURSOR_OPTIONS
O atributo SQL_SOPT_SS_CURSOR especifica se o driver utilizará opções de desempenho específicas do driver nos cursores. O SQLGetData não é permitido quando estas opções estão definidas. A definição padrão é SQL_CO_OFF. O valor ValuePtr é do tipo SQLLEN.
| Valor ValuePtr | Description |
|---|---|
| SQL_CO_OFF | Predefinido. Desativa cursores apenas de avanço rápido, só leitura e autobusca, e ativa SQLGetData em cursores apenas avançados, só leitura. Quando SQL_SOPT_SS_CURSOR_OPTIONS está definido para SQL_CO_OFF, o tipo de cursor não muda. Ou seja, o cursor apenas para avanço rápido continuará a ser um cursor apenas para avanço rápido. Para alterar o tipo de cursor, a aplicação deve agora definir um tipo de cursor diferente usando SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE. |
| SQL_CO_FFO | Ativa cursores apenas para avanço rápido e só leitura, desativa o SQLGetData em cursores apenas para avançar e só leitura. |
| SQL_CO_AF | Ativa a opção de busca automática em qualquer tipo de cursor. Quando esta opção é definida para um handle de comando, SQLExecute ou SQLExecDirect gerará um SQLFetchScroll implícito (SQL_FIRST). O cursor é aberto e o primeiro lote de linhas é devolvido numa única ida e volta ao servidor. |
| SQL_CO_FFO_AF | Ativa cursores apenas para avanço rápido com a opção de busca automática. É o mesmo que se tanto SQL_CO_AF como SQL_CO_FFO fossem especificados. |
Quando estas opções são definidas, o servidor fecha automaticamente o cursor ao detetar que a última linha foi buscada. A aplicação deve continuar a chamar SQLFreeStmt (SQL_CLOSE) ou SQLCloseCursor, mas o driver não tem de enviar a notificação de fecho para o servidor.
Se a lista de seleção contiver uma coluna de texto, ntext ou imagem , o cursor apenas de avanço rápido é convertido num cursor dinâmico e SQLGetData é permitido.
SQL_SOPT_SS_DEFER_PREPARE
O atributo SQL_SOPT_SS_DEFER_PREPARE determina se a declaração é preparada imediatamente ou adiada até que SQLExecute, SQLDescribeCol ou SQLDescribeParam sejam executados. No SQL Server 7.0 e anteriores, esta propriedade é ignorada (não há preparação diferida). O valor ValuePtr é do tipo SQLLEN.
| Valor ValuePtr | Description |
|---|---|
| SQL_DP_ON | Predefinido. Após chamar a Função SQLPrepare, a preparação da instrução é adiada até que o SQLExecute seja chamado ou até que a operação de metapropriedade (SQLDescribeCol ou SQLDescribeParam) seja executada. |
| SQL_DP_OFF | A declaração é preparada assim que o SQLPrepare é executado. |
SQL_SOPT_SS_REGIONALIZE
O atributo SQL_SOPT_SS_REGIONALIZE é usado para determinar a conversão de dados ao nível da instrução. O atributo faz com que o driver respeite a definição de localização do cliente ao converter data, hora e moeda em cadeias de caracteres. A conversão é feita de tipos de dados nativos do SQL Server apenas para cadeias de caracteres.
O valor ValuePtr é do tipo SQLLEN.
| Valor ValuePtr | Description |
|---|---|
| SQL_RE_OFF | Predefinido. O driver não converte dados de data, hora e moeda em dados de cadeia de caracteres usando a definição local do cliente. |
| SQL_RE_ON | O driver utiliza a definição de localização do cliente ao converter dados de data, hora e moeda para dados de cadeia de caracteres. |
As definições de conversão regional aplicam-se aos tipos de dados de moeda, numérico, data e hora. A definição de conversão só se aplica a conversões de saída quando valores de moeda, numérico, data ou hora são convertidos em cadeias de caracteres.
Note
Quando a opção de instrução SQL_SOPT_SS_REGIONALIZE está ativada, o driver usa as definições do registo local para o utilizador atual. O driver não honra a localização da thread atual se a aplicação a definir, por exemplo, chamando SetThreadLocale.
Alterar o comportamento regional de uma fonte de dados pode causar falhas na aplicação. Uma aplicação que analisa cadeias de data e espera que as cadeias de data apareçam conforme definido pelo ODBC poderia ser prejudicada por alterar este valor.
SQL_SOPT_SS_TEXTPTR_LOGGING
O atributo SQL_SOPT_SS_TEXTPTR_LOGGING alterna o registo de operações em colunas que contêm dados de texto ou imagem . O valor ValuePtr é do tipo SQLLEN.
| Valor ValuePtr | Description |
|---|---|
| SQL_TL_OFF | Desativa o registo das operações realizadas em dados de texto e imagem . |
| SQL_TL_ON | Predefinido. Permite o registo das operações realizadas em dados de texto e imagem . |
SQL_SOPT_SS_HIDDEN_COLUMNS
O atributo SQL_SOPT_SS_HIDDEN_COLUMNS expõe, no conjunto de resultados, colunas escondidas numa instrução SQL Server SELECT FOR BROWSE (selecionar para explorar). O driver não expõe estas colunas por defeito. O valor ValuePtr é do tipo SQLLEN.
| Valor ValuePtr | Description |
|---|---|
| SQL_HC_OFF | Predefinido. As colunas FOR BROWSE estão ocultas do conjunto de resultados. |
| SQL_HC_ON | Expõe colunas PARA NAVEGAR. |
SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT
O atributo SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT devolve o texto da mensagem para o pedido de notificação da consulta.
SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS
O atributo SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS especifica as opções usadas para o pedido de notificação de consulta. Estes são especificados numa cadeia com name=value sintaxe conforme especificado abaixo. A aplicação é responsável por criar o serviço e ler as notificações da fila.
A sintaxe da cadeia de opções de notificações de consulta é:
service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]
Por exemplo:
service=mySSBService;local database=mydb
SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT
O atributo SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT especifica o número de segundos em que a notificação de consulta deve permanecer ativa. O valor padrão é 432000 segundos (5 dias). O valor ValuePtr é do tipo SQLLEN.
SQL_SOPT_SS_PARAM_FOCUS
O atributo SQL_SOPT_SS_PARAM_FOCUS especifica o foco para chamadas subsequentes SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec e SQLSetDescRec.
O tipo para SQL_SOPT_SS_PARAM_FOCUS é SQLULEN.
O padrão é 0, o que significa que estas chamadas endereçam parâmetros que correspondem a marcadores de parâmetros na instrução SQL. Quando definido para o número de parâmetro de um parâmetro com valor em tabela, estes chamam para as colunas desse parâmetro com valor em tabela. Quando definido para um valor que não é o número do parâmetro de um parâmetro com valores de tabela, estas chamadas retornam o erro IM020: "Foco de parâmetro não se refere a um parâmetro com valores de tabela".
SQL_SOPT_SS_NAME_SCOPE
O atributo SQL_SOPT_SS_NAME_SCOPE especifica o escopo do nome para chamadas de funções de catálogo subsequentes. O conjunto de resultados devolvido pelo SQLColumns depende da definição de SQL_SOPT_SS_NAME_SCOPE.
O tipo para SQL_SOPT_SS_NAME_SCOPE é SQLULEN.
| Valor ValuePtr | Description |
|---|---|
| SQL_SS_NAME_SCOPE_TABLE | Predefinido. Ao usar parâmetros com valores de tabela, indica que os metadados das tabelas reais devem ser devolvidos. Ao usar a funcionalidade de colunas esparsas, o SQLColumns devolverá apenas as colunas que não pertencem à column_set esparsa. |
| SQL_SS_NAME_SCOPE_TABLE_TYPE | Indica que a aplicação requer metadados para um tipo de tabela, em vez de uma tabela real (as funções de catálogo devem devolver metadados para os tipos de tabela). A aplicação passa então a TYPE_NAME do parâmetro com valores de tabela como o parâmetro TableName . |
| SQL_SS_NAME_SCOPE_EXTENDED | Ao usar a funcionalidade de colunas esparsas, o SQLColumns devolve todas as colunas, independentemente da pertença column_set . |
| SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET | Ao usar a funcionalidade de colunas esparsas, o SQLColumns devolve apenas as colunas que são membros do column_set esparso. |
| SQL_SS_NAME_SCOPE_DEFAULT | Igual a SQL_SS_NAME_SCOPE_TABLE. |
SS_TYPE_CATALOG_NAME e SS_TYPE_SCHEMA_NAME são usados com os parâmetros CatalogName e SchemaName , respetivamente, para identificar o catálogo e o esquema do parâmetro com valores de tabela. Quando uma aplicação termina de recuperar os metadados dos parâmetros com valores de tabela, deve voltar a SQL_SOPT_SS_NAME_SCOPE ao seu valor padrão de SQL_SS_NAME_SCOPE_TABLE.
Quando SQL_SOPT_SS_NAME_SCOPE está definido para SQL_SS_NAME_SCOPE_TABLE, as consultas aos servidores ligados falham. Chamadas para SQLColumns ou SQLPrimaryKeys com um catálogo que contenha um componente de servidor falharão.
Se tentar definir SQL_SOPT_SS_NAME_SCOPE para um valor inválido, SQL_ERROR é devolvido e é gerado um registo de diagnóstico com SQLSTATE HY024 e a mensagem "Valor do atributo inválido".
Se uma função de catálogo diferente de SQLTables, SQLColumns ou SQLPrimaryKeys for chamada quando SQL_SOPT_SS_NAME_SCOPE tem um valor diferente de SQL_SS_NAME_SCOPE_TABLE, SQL_ERROR é devolvido. É gerado um registo de diagnóstico com SQLSTATE HY010 e a mensagem "Function sequence error (SQL_SOPT_SS_NAME_SCOPE is not set to SQL_SS_NAME_SCOPE_TABLE)".