INF: Didistribusikan pertanyaan yang dijalankan dalam pemicu meminta MSDTC

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 274348 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Ringkasan

Pertanyaan yang dijalankan dalam konteks pemicu secara otomatis dibungkus dalam transaksi. Jika ada pertanyaan didistribusikan dalam kode memicu, transaksi dipromosikan untuk transaksi didistribusikan secara otomatis.

Informasi lebih lanjut

SQL Server buku Online menyebutkan bahwa transaksi terdistribusi di Transact-SQL dipanggil dalam tiga cara:
  • Ketika Anda mulai transaksi terdistribusi eksplisit yang menggunakan pernyataan mulai transaksi TERDISTRIBUSI.
  • Ketika Anda menjalankan query didistribusikan sementara dalam transaksi lokal. Jika data sumber OLE DB mendukung ITransactionJoin antarmuka, transaksi dipromosikan untuk transaksi terdistribusi, bahkan jika query query read-only. Jika data sumber tidak mendukung ITransactionJoin, hanya baca-saja pernyataan diperbolehkan.
  • Jika SET REMOTE_PROC_TRANSACTIONS ON dijalankan dan transaksi lokal memanggil prosedur disimpan jauh pada Server SQL lainnya, transaksi lokal dipromosikan untuk transaksi terdistribusi. SQL Server menggunakan Microsoft didistribusikan transaksi Koordinator (MSDTC) untuk mengkoordinasikan transaksi dengan remote server.
Query terdistribusi yang dibungkus pemicu, bahkan dengan tidak ada transaksi yang secara eksplisit ditetapkan, juga diperlakukan sebagai transaksi terdistribusi.

Untuk melihat contoh, ikuti langkah berikut:
  1. Menghentikan layanan MSDTC di server lokal dengan mengetik perintah berikut dari jendela perintah:
    net stop MSDTC
  2. Mengeksekusi kode berikut dalam Query Analyzer:
    USE tempdb
    go
    
    CREATE TABLE t1 (col1 int, col2 varchar(10))
    go
    
    INSERT t1 VALUES (1, 'a')
    go
    
    EXEC SP_ADDLINKEDSERVER 'SQL1', N'SQL Server'
    go
    
    CREATE TRIGGER t1_ins ON t1
    FOR INSERT AS
      PRINT 'This is a test for distributed transaction.  The current trancount is ' + convert(char(1), @@trancount) + '.'
      PRINT ' '
      EXEC SQL1.master.dbo.sp_helpdb
    go
    					
  3. Setelah pelatuk dibuat pada Daftar Tabel t1, mengeksekusi query INSERT berikut:
    INSERT t1 VALUES (2, 'b')
    					
    Kesalahan MSDTC yang dihasilkan, dan query output adalah sebagai berikut:
    (1 row(s) affected)
    
    (1 row(s) affected)
    
    (1 row(s) affected)
    
    Server added.
    This is a test for distributed transaction.  The current trancount is 1.
     
    Server: Msg 8501, Level 16, State 3, Procedure t1_ins, Line 6
    MSDTC on server 'SQL1' is unavailable.<BR/>
    					
Jika query didistribusikan tidak perlu menjadi berkomitmen/digulung kembali dengan transaksi lokal sebagai satu unit kerja, Anda dapat menambahkan perintah KOMIT TRAN T-SQL di depan query didistribusikan untuk memaksa transaksi lokal untuk melakukan. Query didistribusikan akan secara otomatis dihapus dari transaksi.

Properti

ID Artikel: 274348 - Kajian Terakhir: 08 Maret 2013 - Revisi: 1.0
Berlaku bagi:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium-based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Evaluation Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Express Edition with Advanced Services
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium-based Systems
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Enterprise Evaluation
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
Kata kunci: 
kbinfo kbmt KB274348 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 274348

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com