System.Transactions 示例

更新日期: 2005 年 12 月 5 日

System.Transactions 示例说明了如何使用 System.Transactions 命名空间中的托管 API 来控制事务。特别需要指出的是,System.Transactions.TransactionScope 类用于建立事务边界,以确保只有库存足以满足需求的情况下,才会调整库存数据,并且如果存在足够的库存,库存将自动从一个位置传输到另一个位置。通过将库存中的更改记录到独立服务器上存储的审核数据库来说明如何在分步式事务中进行自动注册。\

必须将此示例安装在两台物理计算机的两个部分中:主要示例服务器和审核服务器。

安装目录:drive:\Program Files\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\Transaction\

应用场景

Jane 是 Adventure Works Cycles 的开发人员。她需要以事务一致的方式跟踪库存从一个位置到另一个位置的移动情况,并参与对任何库存更改的审核。

语言

Transact-SQL、Visual C# 和 Visual Basic。

功能

System.Transactions 示例使用 SQL Server 的以下功能。

应用领域 功能

整体

公共语言运行时 (CLR)、事务、分布式事务、ADO .NET、MSDTC

必备条件

在运行此示例之前,请确保安装了下列软件:

  • Microsoft SQL Server 2005 或 Microsoft SQL Server 2005 Express Edition (SQL Server Express)。您可以从 SQL Server 2005 Express Edition 文档和示例网站免费获取 SQL Server Express。
  • AdventureWorks 数据库,它随 SQL Server 2005 提供,也可以从 SQL Server 开发人员网站获取。
  • SQL Server 2005 数据库引擎示例。这些示例包含在 SQL Server 2005 中。您可以从 SQL Server 开发人员网站下载这些示例的最新版本。
  • .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免费获取 .NET Framework SDK。请参阅安装 .NET Framework SDK
  • Microsoft 分布式事务处理协调器 (MSDTC)。必须将 MSDTC 配置为允许入站和出站客户端连接。还必须在本示例使用的两台服务器上都安装和配置 MSDTC。有关详细信息,请参阅组件服务文档。

在运行此示例之前,请配置以下组件:

  • 如果任意一台服务器上启用了 Windows 防火墙,则请在两台服务器上都配置该防火墙,以允许进行 SQL Server 和 MSDTC 连接。有关详细信息,请参阅 Windows 防火墙文档。
  • 使用 SQL Server 外围应用配置器工具启用对审核服务器上的 SQL Server 2005 的远程访问。

生成示例

如果尚未创建强名称密钥文件 ExternalSampleKey.snk,则请使用以下说明生成该密钥文件。

生成强名称密钥文件

  1. 打开 Microsoft Visual Studio 2005 命令提示。单击**“开始”,依次指向“所有程序”Microsoft Visual Studio 2005“Visual Studio 工具”,再单击“Visual Studio 2005 命令提示”**。

    - 或者 -

    打开 Microsoft .NET Framework 命令提示。单击**“开始”,依次指向“所有程序”Microsoft .NET Framework SDK 2.0,再单击“SDK 命令提示”**。

  2. 在命令提示符下,使用更改目录 (CD) 命令将命令提示窗口的当前文件夹更改为 Samples 文件夹。

    ms345266.note(zh-cn,SQL.90).gif注意:
    若要确定示例所在的文件夹,请单击“开始”,依次指向“所有程序”Microsoft SQL Server 2005“文档和教程”,然后单击“示例目录”。如果使用了默认安装位置,则示例将位于 <system_drive>:\Program Files\Microsoft SQL Server\90\Samples 中。
  3. 在命令提示符下,运行以下命令以生成密钥文件:

    sn -k ExternalSampleKey.snk

    ms345266.note(zh-cn,SQL.90).gif重要提示:
    有关强名称密钥对的详细信息,请参阅 MSDN 上 .NET 开发中心中的“安全简讯:.NET Framework 中的强名称和安全性”。

生成 System.Transactions 示例

  1. 编辑 CS\Transaction\InventoryMover.cs,并更改字符串常量 auditConnectionString 的值,以正确命名将为本示例存储审核信息的服务器。此服务器必须是安装本示例主要部分的物理计算机之外的物理计算机。在审核服务器上设置使用 SQL Server 身份验证的测试帐户,然后修改 auditConnectionString 以指定赋予此帐户的用户名和密码。

  2. 通过使用 Visual Studio 2005 和所提供的 Visual Studio 解决方案或通过使用 Microsoft MSBuild(包括在 .NET Framework SDK 2.0 中)来编译示例。在命令提示符下运行与以下命令相似的命令:

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

  3. 确保安装了 AdventureWorks 数据库。

  4. 如果没有在默认目录中安装 SQL Server 引擎示例,请修改 Scripts\InstallCS.sql 和 Scripts\InstallVB.sql 中的脚本的 CREATE ASSEMBLY 部分中的路径以指向安装示例的位置。

  5. 如果您不是要使用的 SQL Server 实例的管理员,则必须让管理员授予您 CreateAssembly 权限,才能完成安装。

  6. 根据编译的是 Visual C# 项目还是 Visual Basic 项目,在 Microsoft Management Studio 中打开 Scripts\installCS.sql 或 Scripts\installVB.sql 文件。在连接到主要示例服务器的同时运行该文件中包含的脚本,或在主要示例服务器的命令提示符窗口中运行与以下命令相似的命令:

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

  7. 在 Microsoft 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 2005 或 SQL Server Express 的 CLR。

提供的示例仅供教学使用。这些示例不是针对生产环境设计的,也没有在生产环境中进行测试。对于这些示例,Microsoft 不提供相关的技术支持。未经系统管理员允许,不得将示例应用程序和程序集与生产 SQL Server 数据库或报表服务器相连或一起使用。