共用方式為


Readme_System.Transactions 範例

[本主題是發行前的文件集,在未來的版本中可能有所變更。空白的主題則以預留位置表示。請注意:為了提供您更多繁體中文的內容,Microsoft 以非傳統翻譯方式 (例如機器翻譯) 提供當地語系化的文件。針對此發行前版本,本文件中的部分內容就是以非傳統方式翻譯。Microsoft 了解非傳統方式翻譯的文件很難盡善盡美,此類文件或許會有詞彙、結構、文法方面的錯誤。本內容的正式版將會以傳統翻譯方式翻譯,提供與舊版本相等的譯文品質。]

此範例僅適用於 SQL Server 2005 和 SQL Server 2008,不適用於 SQL Server 2005 之前的任何 SQL Server 版本。

System.Transactions 範例會示範如何使用位於 System.Transactions 命名空間內的 Managed API 來控制交易。特別的是,System.Transactions.TransactionScope 類別是用來建立交易界限,以確保除非有足夠庫存可應付要求,否則不調整庫存數字,而且如果有足夠庫存,則庫存是以不可部分完成的方式從某個位置轉移到另一個位置。示範在分散式交易中自動註冊,其方式是將庫存的變更記錄到儲存在另一部伺服器上的稽核資料庫。

此範例必須分成兩個部分分別安裝在兩部實體電腦上:主要範例伺服器和稽核伺服器。

安裝目錄:C:\Program Files\Microsoft SQL Server\100\Samples\Engine\Programmability\CLR\Transaction\

您必須先下載並安裝 SQL Server 範例和範例資料庫,然後才可以檢視或使用它們。如需詳細資訊,請參閱<安裝 SQL Server 範例和範例資料庫的考量>。

狀況

Jane 是 Adventure Works Cycles 的開發人員。她需要以交易一致的方式追蹤庫存從一個位置到另一個位置的移動,並參與稽核任何庫存變更。

語言

Transact-SQL、Visual C# 和 Visual Basic。

功能

System.Transactions 範例會使用 SQL Server 的下列功能。

應用程式區 功能

整體

Common Language Runtime (CLR)、交易、分散式交易、ADO.NET、MSDTC

必要條件

執行此範例之前,請確定已安裝下列軟體:

  • SQL Server 或 SQL Server Express。您可以從 SQL Server Express 文件集和範例網站中免費取得 SQL Server Express
  • AdventureWorks 資料庫,可在 SQL Server 開發人員網站取得。
  • SQL Server Database Engine 範例,可在 SQL Server 開發人員網站取得。
  • .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免費取得 .NET Framework SDK。請參閱<安裝 .NET Framework 文件集>。
  • Microsoft 分散式交易協調器 (MSDTC)。MSDTC 必須設定為允許傳入與傳出用戶端連接。您必須同時在此範例使用的兩個伺服器上安裝及設定 MSDTC。如需詳細資訊,請參閱<元件服務>文件集。

在執行此範例之前,請設定下列元件:

  • 如果在任一伺服器上啟用了 Windows 防火牆,請將它設定在兩部伺服器上,以便於 SQL Server 和 MSDTC 連接。如需詳細資訊,請參閱 Windows Firewall 文件集。
  • 使用 SQL Server 組態管理員工具,啟用稽核伺服器上 SQL Server 的 TCP/IP 或具名管道存取。

建立範例

如果您尚未建立強式名稱金鑰檔 ExternalSampleKey.snk,請利用下列指示產生金鑰檔。

若要產生強式名稱金鑰檔

  1. 開啟 Visual Studio 2005 命令提示字元。按一下 [開始],依序指向 [所有程式][Microsoft Visual Studio 2005][Visual Studio 工具],然後按一下 [Visual Studio 2005 命令提示字元]

    - 或 -

    開啟 .NET Framework 命令提示字元。按一下 [開始],依序指向 [所有程式][Microsoft .NET Framework SDK 2.0],然後按一下 [SDK 命令提示字元]

  2. 在命令提示字元中,使用變更目錄 (CD) 命令,將 [命令提示字元] 視窗的目前資料夾變更為 Samples 資料夾。

    注意

    若要判斷範例所在的資料夾,請按一下 [開始],並依序指向 [所有程式][Microsoft SQL Server][文件集和教學課程],然後按一下 [範例目錄]。如果使用預設的安裝位置,範例位於 C:\Program Files\Microsoft SQL Server\100\Samples\。

  3. 在命令提示字元中,執行下列其中一個命令來產生金鑰檔:

    sn -k ExternalSampleKey.snk

    注意

    如需有關強式名稱金鑰組的詳細資訊,請參閱 MSDN 中 .NET Development Center 中的<Security Briefs: Strong Names and Security in the .NET Framework>。

若要建立 System.Transactions 範例

  1. 編輯 CS\Transaction\InventoryMover.cs,變更字串常數 auditConnectionString 的值,來正確命名要儲存此範例之稽核資訊的伺服器。伺服器必須與您要用來安裝此範例之主要部分的伺服器為不同的實體電腦。在稽核伺服器上以 SQL Server 驗證來設定一個測試帳戶,然後修改 auditConnectionString,指定您提供給這個帳戶的使用者名稱和密碼。

  2. 您可以使用 Visual Studio 2005 和提供的 Visual Studio 方案,或使用 MSBuild (隨附於 .NET Framework SDK 2.0) 來編譯範例。在命令提示字元中執行下列命令:

    msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\Transaction.sln

  3. 請確定已安裝 AdventureWorks2008R2 資料庫。

  4. 如果您沒有在預設位置安裝 SQL Server 引擎範例,請修改 Scripts\InstallCS.sql 和 Scripts\InstallVB.sql 中指令碼之 CREATE ASSEMBLY 部分的路徑,以參考安裝範例的位置。

  5. 如果您不是正在使用之 SQL Server 執行個體的管理員,則必須讓管理員授與您 CreateAssembly 權限來完成安裝。

  6. 在 Management Studio 中,根據您所編譯的是 Visual C# 專案還是 Visual Basic 專案來開啟 scripts\installCS.sql 或 scripts\installVB.sql 檔案。當您連接到主要範例伺服器時,執行此檔案所包含的指令碼,或在主要範例伺服器的命令提示字元視窗中執行如下命令:

    sqlcmd -E -I -i Scripts\InstallCS.sql

  7. 在 Management Studio 中,開啟 scripts\installDB.sql 檔案。當您連接到稽核伺服器時,執行此檔案所包含的指令碼,或在稽核伺服器的命令提示字元視窗中執行如下命令:

    sqlcmd -E -I -i Scripts\InstallDB.sql

執行範例

若要執行 System.Transactions 範例

  1. 在 Management Studio 中,開啟 scripts\test.sql 檔案。執行檔案中所包含的指令碼,或在 [命令提示字元] 視窗中執行下列命令:

    sqlcmd -E -I -i Scripts\test.sql

移除範例

若要移除 System.Transactions 範例

  1. 在 Management Studio 中,開啟 scripts\cleanup.sql 檔案。在主要範例伺服器上執行該檔案所包含的指令碼,或在主要範例伺服器上的命令提示字元視窗中執行下列命令:

    sqlcmd -E -I -i Scripts\cleanup.sql

  2. 在 Management Studio 中,開啟 scripts\cleanup.sql 檔案。在稽核伺服器上執行該檔案所包含的指令碼,或在稽核伺服器上的命令提示字元視窗中執行下列命令:

    sqlcmd -E -I -i Scripts\cleanupDB.sql

註解

必須啟用 SQL Server 或 SQL Server Express 的 CLR,才能讓此範例正常運作。

範例只供教育目的之用。它們不能用於實際執行環境,而且尚未在實際執行環境中測試過。Microsoft不提供對這些範例的技術支援。若沒有系統管理員的權限,就不應該在生產 SQL Server 資料庫或報表伺服器上,連接或使用範例應用程式及組件。