Arjuna Aircraft Ident.: F-MBSD | Bon, tout à l'heure je vais aller voir la direction de ma boîte pour acheter des bouquins C#.
Je vais donc demander l'achat de celui-ci.
Mais d'un point de vue purement développement (orienté ASP.NET) vous me conseillez quoi ?
Si possible un bouquin "référence", c'est à dire que je ne suis pas plus emballé que ça par un bouquin qui propose le développement d'une appli pas à pas, mais plutôt un qui reprend chaque élément du SDK point par point, avec une explication et des exemples conrets de leur utilisation (pas seulement "ça fait ça et voici la syntaxe" ).
J'aimerais en fait, dans la démarche quelquechose qui ressemble à l'aide de SQL Server. Voici un article pour exemple :
Code :
- Référence de Transact-SQL
- BEGIN TRANSACTION
- Indique le début d'une transaction locale explicite. L'instruction BEGIN TRANSACTION incrémente de 1 la variable @@TRANCOUNT.
- Syntaxe
- BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable
- [ WITH MARK [ 'description' ] ] ]
- Arguments
- transaction_name
- Nom attribué à la transaction. transaction_name doit respecter les règles applicables aux identificateurs, mais seuls les 32 premiers caractères de ce nom sont utilisés. Utilisez les noms de transaction seulement sur la paire la plus extérieure des instructions BEGIN...COMMIT ou BEGIN...ROLLBACK imbriquées.
- @tran_name_variable
- Nom d'une variable définie par l'utilisateur et contenant un nom de transaction valide. La variable doit être déclarée avec un type de données char, varchar, nchar ou nvarchar.
- WITH MARK ['description']
- Indique que la transaction est marquée dans le journal. description est une chaîne qui décrit la marque.
- Si WITH MARK est utilisé, un nom de transaction doit être spécifié. WITH MARK permet de restaurer un journal de transactions par rapport à une marque nommée.
- Notes
- BEGIN TRANSACTION représente le point auquel les données référencées par une connexion sont logiquement et physiquement cohérentes. Si des erreurs sont détectées, toutes les modifications apportées aux données après l'exécution de l'instruction BEGIN TRANSACTION peuvent être annulées afin que les données reviennent à cet état connu de cohérence. Une transaction se poursuit jusqu'à ce qu'elle se termine sans erreur et que l'instruction COMMIT TRANSACTION soit émise pour que les modifications soient intégrées de façon permanente à la base de données ou bien jusqu'à ce que des erreurs soient rencontrées, auquel cas les modifications sont effacées à l'aide de l'instruction ROLLBACK TRANSACTION.
- L'instruction BEGIN TRANSACTION démarre une transaction locale pour la connexion qui l'a émise. En fonction des paramètres de niveau d'isolation définis pour la transaction en cours, de nombreuses ressources acquises pour la prise en charge des instructions Transact-SQL émises par la connexion sont verrouillées par la transaction jusqu'à ce que celle-ci se termine soit par un COMMIT TRANSACTION soit par un ROLLBACK TRANSACTION. Les transactions suspendues pendant de longues périodes peuvent empêcher les autres utilisateurs d'accéder à ces ressources verrouillées.
- Lorsque BEGIN TRANSACTION démarre une transaction locale, celle-ci n'est pas enregistrée dans le journal des transactions avant que l'application n'effectue une action devant y être consignée, comme l'exécution d'une instruction INSERT, UPDATE ou DELETE. Une application peut effectuer des actions telles que l'acquisition de verrous afin de protéger le niveau d'isolation d'une transaction des instructions SELECT, mais rien n'est enregistré dans le journal avant que l'application n'effectue une action de modification.
- Il est inutile d'attribuer un nom à chaque transaction d'une séries de transactions imbriquées. En effet, seul le premier (le plus en dehors) nom de transaction est enregistré dans le système. Une annulation vers tout autre nom (autre que celui d'un point de sécurité valide) entraîne une erreur. Dans ce cas, aucune des instructions exécutées avant l'annulation n'est en fait annulée au moment où l'erreur se produit. Les instructions ne sont annulées que lorsque l'instruction extérieure l'est.
- BEGIN TRANSACTION démarre une transaction locale. La transaction locale est promue au rang de transaction distribuée si les actions suivantes sont effectuées avant qu'elle soit validée ou annulée :
- Exécution d'une instruction INSERT, DELETE ou UPDATE faisant référence à une table distante ou à un serveur lié. L'instruction INSERT, UDPATE ou DELETE échoue si le fournisseur OLE DB utilisé pour l'accès au serveur lié ne prend pas en charge l'interface ITransactionJoin.
- Un appel à une procédure stockée distante est effectué quand l'option REMOTE_PROC_TRANSACTIONS a la valeur ON.
- La copie locale de SQL Server devient le contrôleur de transaction et utilise MS DTC pour gérer la transaction distribuée.
- Transactions marquées
- L'option WITH MARK permet de placer le nom de la transaction dans le journal des transactions. Lors de la restauration d'une base de données dans un état antérieur, la transaction marquée peut être utilisée à la place d'une date et d'une heure. Pour plus d'informations, voir Restauration d'une base de données à un état antérieur, Récupération jusqu'à une transaction nommée et RESTORE.
- En outre, les marques du journal des transactions sont nécessaires pour récupérer un ensemble de bases de données connexes dans un état cohérent d'un point de vue logique. Une transaction distribuée permet de placer les marques dans les journaux de transactions des bases de données connexes. La récupération de l'ensemble de bases de données connexes jusqu'à ses marques aboutit à un ensemble de bases de données cohérent d'un point de vue transactionnel. Le placement de marques dans des bases de données connexes implique des procédures particulières. Pour plus d'informations, voir Sauvegarde et restauration de bases de données connexes.
- La marque n'est placée dans le journal des transactions que si la base de données est mise à jour par la transaction marquée. Les transactions qui ne modifient pas de données ne sont pas marquées.
- L'instruction BEGIN TRAN new_name WITH MARK peut être imbriquée dans une transaction existante non marquée. new_name devient alors le nom de marque de la transaction, malgré le nom éventuellement déjà affecté à la transaction. Dans l'exemple suivant, M2 est le nom de la marque.
- BEGIN TRAN T1
- UPDATE table1 ...
- BEGIN TRAN M2 WITH MARK
- UPDATE table2 ...
- SELECT * from table1
- COMMIT TRAN M2
- UPDATE table3 ...
- COMMIT TRAN T1
- Si vous essayez de marquer une transaction déjà marquée, vous obtenez un message d'avertissement (non d'erreur) :
- BEGIN TRAN T1 WITH MARK
- UPDATE table1 ...
- BEGIN TRAN M2 WITH MARK
- Server: Msg 3920, Level 16, State 1, Line 3
- WITH MARK option only applies to the first BEGIN TRAN WITH MARK.
- The option is ignored.
- Autorisations
- L'autorisation d'exécuter l'instruction BEGIN TRANSACTION est attribuée par défaut à tout utilisateur reconnu.
- Exemple
- A. Attribution d'un nom à une transactionCet exemple montre comment nommer une transaction. Dès la validation de la transaction nommée, les droits d'auteur versés pour tous les manuels d'informatique les mieux vendus sont majorés de 10 %.
- DECLARE @TranName VARCHAR(20)
- SELECT @TranName = 'MyTransaction'
- BEGIN TRANSACTION @TranName
- GO
- USE pubs
- GO
- UPDATE roysched
- SET royalty = royalty * 1.10
- WHERE title_id LIKE 'Pc%'
- GO
- COMMIT TRANSACTION MyTransaction
- GO
- B. Marquage d'une transactionCet exemple montre comment marquer une transaction. La transaction nommée « RoyaltyUpdate » est marquée.
- BEGIN TRANSACTION RoyaltyUpdate
- WITH MARK 'Update royalty values'
- GO
- USE pubs
- GO
- UPDATE roysched
- SET royalty = royalty * 1.10
- WHERE title_id LIKE 'Pc%'
- GO
- COMMIT TRANSACTION RoyaltyUpdate
- GO
- Voir aussi
- BEGIN DISTRIBUTED TRANSACTION
- COMMIT TRANSACTION
- COMMIT WORK
- RESTORE
- Récupération jusqu'à une transaction nommée
- ROLLBACK TRANSACTION
- ROLLBACK WORK
- SAVE TRANSACTION
- Transactions
- ©1988-2000 Microsoft Corporation. Tous droits réservés.
|
=> On a le détail de la syntaxe, dont chaque élément est convenablement détaillé.
=> On a ensuite une explication technique et théorique de l'instruction avec des Tips d'utilisation (limitation, etc.)
=> Des explication sur des fonctionnalités dérivées (ici, les "transactions marquées" )
=> Des exemples de l'instruction, permettant de se rendre compte du fonctionnement, et prévoir les erreurs possibles.
Personnellement, je trouve très clair ce genre d'explications, et j'y suis très habitué. Si on n'a pas toujours une vision globale de l'implémentation des éléments, au moins on les comprends correctement de façon unitaire, ce qui me semble le plus intéressant. Je n'aime pas les exemples de 3 pages auxquels on ne comprend pas un traître mot. |