Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lors de l’extraction et de la mise à jour des données via des curseurs SQL Server, une application consommateur du fournisseur OLE DB SQL Server Native Client est liée par les mêmes considérations et contraintes qui s’appliquent à toute autre application cliente.
Seules les lignes des curseurs SQL Server participent au contrôle d’accès aux données simultané. Lorsque le consommateur demande un ensemble de lignes modifiable, le contrôle d’accès concurrentiel est contrôlé par DBPROP_LOCKMODE. Pour modifier le niveau de contrôle d’accès simultané, le consommateur définit la propriété DBPROP_LOCKMODE avant d’ouvrir l’ensemble de lignes.
Les niveaux d’isolation des transactions peuvent entraîner des retards significatifs dans le positionnement des lignes si la conception de l’application cliente permet aux transactions de rester ouvertes pendant de longues périodes. Par défaut, le fournisseur OLE DB SQL Server Native Client utilise le niveau d’isolation en lecture validée spécifié par DBPROPVAL_TI_READCOMMITTED. Le fournisseur OLE DB SQL Server Native Client prend en charge l’isolation de lecture incorrecte lorsque la concurrence de l’ensemble de lignes est en lecture seule. Par conséquent, le consommateur peut demander un niveau d’isolation plus élevé dans un ensemble de lignes modifiable, mais ne peut pas demander un niveau inférieur avec succès.
Modes de mise à jour immédiate et différée
En mode de mise à jour immédiate, chaque appel à IRowsetChange ::SetData entraîne un aller-retour vers SQL Server. Si le consommateur apporte plusieurs modifications à une seule ligne, il est plus efficace d’envoyer toutes les modifications avec un seul appel SetData .
En mode de mise à jour différée, un aller-retour est effectué vers sql Server pour chaque ligne indiquée dans les paramètres cRows et rghRows de IRowsetUpdate ::Update.
Dans les deux modes, un aller-retour représente une transaction distincte lorsqu’aucun objet transaction n’est ouvert pour l’ensemble de lignes.
Lorsque vous utilisez IRowsetUpdate ::Update, le fournisseur OLE DB SQL Server Native Client tente de traiter chaque ligne indiquée. Une erreur s’est produite en raison de données, de longueur ou de valeurs d’état non valides pour une ligne qui n’arrête pas le traitement du fournisseur OLE DB SQL Server Native Client. Toutes ou aucune des autres lignes participant à la mise à jour peut être modifiée. Le consommateur doit examiner le tableau prgRowStatus retourné pour déterminer l’échec d’une ligne spécifique lorsque le fournisseur OLE DB SQL Server Native Client retourne DB_S_ERRORSOCCURRED.
Un consommateur ne doit pas supposer que les lignes sont traitées dans un ordre spécifique. Si un consommateur a besoin d’un traitement ordonné de la modification des données sur plus d’une seule ligne, le consommateur doit établir cet ordre dans la logique de l’application et ouvrir une transaction pour placer le processus.