Eventi
Ottieni gratuitamente la certificazione in Microsoft Fabric.
19 nov, 23 - 10 dic, 23
Per un periodo di tempo limitato, il team della community di Microsoft Fabric offre buoni per esami DP-600 gratuiti.
Prepara oraQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Si applica a: SQL Server Istanza gestita di SQL di Azure
Specifica l'inizio di una transazione distribuita Transact-SQL. Quando si usa SQL Server, la transazione distribuita viene gestita da Microsoft Distributed Transaction Coordinator (MS DTC).
Convenzioni relative alla sintassi Transact-SQL
BEGIN DISTRIBUTED { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable ]
[ ; ]
Nome di transazione definito dall'utente e utilizzato per tenere traccia della transazione distribuita nelle utilità MS DTC. transaction_name deve essere conforme alle regole per gli identificatori e deve rispettare il limite <= 32 per il numero di caratteri.
Nome di una variabile definita dall'utente contenente un nome di transazione utilizzato per tenere traccia della transazione distribuita nelle utilità MS DTC. La variabile deve essere dichiarata con un tipo di dati char, varchar, nchar o nvarchar.
L'istanza di SQL Server Database Engine in cui viene eseguita l'istruzione BEGIN DISTRIBUTED TRANSACTION è l'origine della transazione e controlla il completamento della transazione. Quando viene successivamente eseguita un'istruzione COMMIT TRANSACTION o ROLLBACK TRANSACTION per la sessione, l'istanza di controllo richiede che il completamento della transazione distribuita in tutte le istanze coinvolte venga gestito da MS DTC.
L'isolamento dello snapshot a livello di transazione non supporta le transazioni distribuite.
L'integrazione di istanze remote del motore di database in una transazione distribuita in genere avviene quando una sessione già integrata nella transazione distribuita esegue una query distribuita in cui viene fatto riferimento a un server collegato.
Se, ad esempio, l'istruzione BEGIN DISTRIBUTED TRANSACTION viene eseguita nel ServerA, la sessione chiama una stored procedure nel ServerB e un'altra stored procedure nel ServerC. La stored procedure nel ServerC esegue una query distribuita sul ServerD e quindi nella transazione distribuita vengono coinvolti tutti i quattro computer. L'istanza del motore di database nel ServerA è l'istanza di origine e di controllo della transazione.
Le sessioni coinvolte in transazioni distribuite Transact-SQL non ottengono un oggetto transazione passabile a un'altra sessione per l'integrazione esplicita nella transazione distribuita. L'unico modo per consentire l'integrazione di un server remoto nella transazione consiste nell'utilizzare il server come destinazione di una chiamata di stored procedure remota o di una query distribuita.
Quando una query distribuita viene eseguita in una transazione locale, la transazione viene promossa automaticamente a una transazione distribuita se l'origine dati OLE DB di destinazione supporta ITransactionLocal. Se l'origine dati OLE DB di destinazione non supporta ITransactionLocal, nella query distribuita è possibile eseguire solo operazioni di lettura.
Una sessione già integrata nella transazione distribuita esegue una chiamata di stored procedure remota in cui viene fatto riferimento a un server remoto.
L'opzione sp_configure remote proc trans
controlla se le chiamate a stored procedure remote in una transazione locale determinano automaticamente la promozione della transazione locale a una transazione distribuita gestita da MS DTC. L'opzione SET a livello di connessione REMOTE_PROC_TRANSACTIONS può essere usata per eseguire l'override del valore predefinito dell'istanza stabilito da sp_configure remote proc trans
. Quando questa opzione è attivata, una chiamata di stored procedure remota determina la promozione di una transazione locale a una transazione distribuita. La connessione in cui viene creata la transazione MS DTC diventa l'origine della transazione. L'istruzione COMMIT TRANSACTION avvia un'operazione di commit coordinata da MS DTC. Se l'opzione sp_configure remote proc trans
è IMPOSTATa su ON, le chiamate di stored procedure remote nelle transazioni locali vengono protette automaticamente come parte delle transazioni distribuite senza dover riscrivere le applicazioni per eseguire in modo specifico BEGIN DISTRIBUTED TRANSACTION anziché BEGIN TRANSACTION.
Per ulteriori informazioni sull'ambiente e sul processo delle transazioni distribuite, vedere la documentazione di Microsoft Distributed Transaction Coordinator.
È richiesta l'appartenenza al ruolo public.
In questo esempio viene eliminato un candidato dal database AdventureWorks2022 sia nell'istanza locale del motore di database che in un'istanza in un server remoto. Entrambi i database eseguiranno il commit o il rollback della transazione.
Nota
Se nel computer che esegue l'istanza del motore di database non è installato MS DTC, in questo esempio viene visualizzato un messaggio di errore. Per ulteriori informazioni sull'installazione di MS DTC, vedere la documentazione di Microsoft Distributed Transaction Coordinator.
USE AdventureWorks2022;
GO
BEGIN DISTRIBUTED TRANSACTION;
-- Delete candidate from local instance.
DELETE AdventureWorks2022.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
-- Delete candidate from remote instance.
DELETE RemoteServer.AdventureWorks2022.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
GO
Eventi
Ottieni gratuitamente la certificazione in Microsoft Fabric.
19 nov, 23 - 10 dic, 23
Per un periodo di tempo limitato, il team della community di Microsoft Fabric offre buoni per esami DP-600 gratuiti.
Prepara ora