Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Base de dados SQL no Microsoft Fabric
Ao buscar e atualizar dados através de cursores SQL Server, uma aplicação de consumo com um Driver OLE DB para SQL Server está sujeita às mesmas considerações e restrições que se aplicam a qualquer outra aplicação cliente.
Apenas as linhas nos cursores do SQL Server participam no controlo concorrente de acesso aos dados. Quando o consumidor solicita um conjunto de linhas modificável, o controlo de concorrência é controlado por DBPROP_LOCKMODE. Para modificar o nível do controlo de acesso concorrente, o consumidor define a propriedade DBPROP_LOCKMODE antes de abrir o conjunto de linhas.
Os níveis de isolamento das transações podem causar atrasos significativos no posicionamento das linhas se o design da aplicação cliente permitir que as transações permaneçam abertas durante longos períodos. Por defeito, o Driver OLE DB para SQL Server utiliza o nível de isolamento read-commit especificado por DBPROPVAL_TI_READCOMMITTED. O Driver OLE DB para SQL Server suporta isolamento de leitura suja quando a concorrência do conjunto de linhas é apenas de leitura. Assim, o consumidor pode solicitar um nível mais elevado de isolamento num conjunto de linhas modificável, mas não pode solicitar nenhum nível inferior com sucesso.
Modos de Atualização Imediata e Atrasada
Em modo de atualização imediata, cada chamada para IRowsetChange::SetData provoca uma viagem de ida e volta ao SQL Server. Se o consumidor fizer múltiplas alterações numa única linha, é mais eficiente submeter todas as alterações com uma única chamada SetData .
No modo de atualização atrasada, é feita uma ida e volta ao SQL Server para cada linha indicada nos parâmetros cRows e rghRows do IRowsetUpdate::Update.
Em qualquer dos modos, uma ida e volta representa uma transação distinta quando nenhum objeto de transação está aberto para o conjunto de linhas.
Quando está a usar IRowsetUpdate::Update, o Driver OLE DB para SQL Server tenta processar cada linha indicada. Um erro que ocorre devido a dados, comprimento ou valores de estado inválidos para qualquer linha não impede o processamento do Driver OLE DB para SQL Server. Todas ou nenhuma das outras linhas participantes na atualização podem ser modificadas. O consumidor deve examinar o array prgRowStatus devolvido para determinar a falha de qualquer linha específica quando o Driver OLE DB para SQL Server devolve DB_S_ERRORSOCCURRED.
Um consumidor não deve assumir que as linhas são processadas numa ordem específica. Se um consumidor exigir um processamento ordenado de modificação de dados em mais do que uma única linha, o consumidor deve estabelecer essa ordem na lógica da aplicação e abrir uma transação para encerrar o processo.