Readme_MARS

更新: 2006 年 7 月 17 日

此範例示範如何使用 Multiple Active Result Set (MARS) 功能。MARS 可讓您在相同連接上執行多個命令,即使執行一或多個命令的所有結果可能無法完全傳回用戶端。

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

預設位置:<drive>:\Program Files\Microsoft SQL Server\90\Samples\Engine\

Data Access\ADO\MARS

狀況

AdventureWorks Cycles 要提升其最流行之自行車的標準成本和市價,因為油漆成本的增加導致了那些自行車價格的隨之上升。視油漆的色彩而定,價格的增加值會有所不同。

程式語言

Transact-SQL、Visual C# 和 Visual Basic。

功能

MARS 範例會使用 SQL Server 2005 和 Microsoft .NET Framework 2.0 版的下列功能:

應用程式區 功能

整體

MARS、ADO.NET 2.0、Transact-SQL 預存程序

必要條件

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

  • SQL Server 2005 或 SQL Server 2005 Express Edition (SQL Server Express)。您可以從 SQL Server 範例與下載網站 (英文) 下載 SQL Server Express。
  • SQL Server 2005 中包含的 AdventureWorks 資料庫,也可以從 SQL Server 開發人員網站取得。
  • SQL Server 2005 Database Engine 範例。SQL Server 2005 中隨附這些範例。您可以從 SQL Server 開發人員網站下載最新版的範例。
  • .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免費取得 .NET Framework SDK。請參閱<安裝 .NET Framework SDK>。

建立範例

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

若要產生強式名稱金鑰檔

  1. 開啟 Microsoft Visual Studio 2005 命令提示字元。按一下 [開始],依序指向 [程式集] 和 [Microsoft .NET Framework SDK 2.0],然後按一下 [SDK 命令提示字元]。

    -- 或 --

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

  2. 使用變更目錄命令 (CD),將命令提示字元視窗的現行目錄切換到範例的安裝資料夾。

    ms160937.note(zh-tw,SQL.90).gif附註:
    若要判斷範例所在的資料夾,按一下 [開始] 按鈕,依序指向 [所有程式]、[Microsoft SQL Server] 和 [文件集和教學課程],然後按一下 [範例目錄]。如果是使用預設安裝位置,則範例位於 <system_drive>:\Program Files\Microsoft SQL Server\100\Samples。
  3. 在命令提示字元中,執行下列其中一個命令來產生金鑰檔:

    sn -k SampleKey.snk

    ms160937.note(zh-tw,SQL.90).gif重要事項:
    如需有關強式名稱金鑰組的詳細資訊,請參閱 MSDN 中 .NET Development Center 中的<Security Briefs: Strong Names and Security in the .NET Framework>。

若要建立範例,請執行下列動作:

建立範例

  1. 使用 Visual Studio 和位於 CS 目錄中的方案檔來編譯範例,或在 .NET Framework 或 Microsoft Visual Studio 2005 命令提示字元視窗中使用下列 MSBuild 命令列:

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

執行範例

若要執行範例,請執行下列動作:

執行範例

  1. 使用 SQL Server Management Studio 開啟 scripts\install.sql 指令碼。執行該檔案的內容,或在 [命令提示字元] 視窗中執行下列命令:

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

  2. 在命令提示字元視窗中,尋找 CS\MARS\bin\debug 目錄並執行下列命令:

    mars

移除範例

若要重設由此範例修改的資料並移除範例,請執行下列動作:

移除範例

  1. 使用 Management Studio 開啟 Scripts\cleanup.sql 指令碼。執行該檔案的內容,或在 [命令提示字元] 視窗中執行下列命令:

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

註解

永遠要考慮到,在伺服器端查詢或更新中使用 JOIN,是否比使用 MARS 更有效。例如,您可能需要知道 2004 年三月每個銷售訂單詳細記錄的銷售訂單識別碼、客戶識別碼、產品號碼、訂貨數量和訂單行項目總計。雖然您可以使用 MARS 撰寫該查詢,但使用 JOIN 撰寫查詢會更有效,如範例所示。

SELECT SOH.SalesOrderID, SOH.CustomerID, SOD.ProductID, 
  SOD.OrderQty, SOD.LineTotal
FROM Sales.SalesOrderHeader as SOH
JOIN Sales.SalesOrderDetail as SOD 
  ON SOH.SalesOrderID = SOD.SalesOrderID
WHERE SOH.OrderDate >= CONVERT(datetime, '20040301') 
  AND SOH.OrderDate < CONVERT(datetime, '20040401')
ORDER BY SOH.SalesOrderID;

變更歷程記錄

版本 歷程記錄

2005 年 12 月 5 日

變更的內容:
  • 已變更產生金鑰檔的指示,包括金鑰檔的名稱和位置。