部署 CLR 数据库对象

适用于:SQL Server

部署是分发要在其他计算机上安装并运行的已完成应用程序或模块的过程。 使用 Microsoft Visual Studio,可以开发公共语言运行时 (CLR) 数据库对象,并将其部署到测试服务器。 或者,也可以使用 Microsoft .NET Framework再发行文件(而不是 Visual Studio)编译托管数据库对象。 编译后,可以使用 Visual Studio 或 Transact-SQL 语句将包含 CLR 数据库对象的程序集部署到测试服务器。 请注意,Visual Studio .NET 2003 无法用于 CLR 集成编程或部署。 SQL Server包括预安装的 .NET Framework,Visual Studio .NET 2003 无法使用 .NET Framework 2.0 程序集。

在测试服务器上测试并验证了 CLR 方法后,便可以使用部署脚本将这些方法分发到生产服务器。 部署脚本可以手动生成,也可以使用 SQL Server Management Studio (请参阅本主题后面的过程) 。

CLR 集成功能在 SQL Server 中默认处于关闭状态,并且必须启用才能使用 CLR 程序集。 有关详细信息,请参阅 Enabling CLR Integration

将程序集部署到测试服务器

可以使用 Visual Studio 开发 CLR 函数、过程、触发器、用户定义类型 (UDT) 或用户定义聚合 (UDA),并将其部署到测试服务器。 也可以使用 .NET Framework 再分发文件附带的命令行编译器(如 csc.exe 和 vbc.exe)编译这些托管数据库对象。 为SQL Server开发托管数据库对象不需要 Visual Studio 集成开发环境。

请务必确保解决所有编译器错误和警告。 然后,可以使用 Visual Studio 或 Transact-SQL 语句在SQL Server数据库中注册包含 CLR 例程的程序集。

注意

必须在 SQL Server 实例上启用 TCP/IP 网络协议,才能使用 Microsoft Visual Studio 进行远程开发、调试和开发。 有关在服务器上启用 TCP/IP 协议的详细信息,请参阅 配置客户端协议

使用 Visual Studio 部署程序集

  1. 通过从“生成”菜单中选择“生成<项目名称>”来生成项目。

  2. 解决所有生成错误和警告,然后将程序集部署到测试服务器。

  3. 从“生成”菜单中选择“部署”。 然后,程序集将在首次在 Visual Studio 中创建SQL Server项目时指定的 SQL Server 实例和数据库中注册。

使用 Transact-SQL 部署程序集

  1. 使用 .NET Framework 附带的命令行编译器编译源文件中的程序集。

  2. 对于 Microsoft Visual C# 源文件:

  3. csc /target:library C:\helloworld.cs

  4. 对于 Microsoft Visual Basic 源文件:

vbc /target:library C:\helloworld.vb

这些命令使用 /target 选项启动 Visual C# 或 Visual Basic 编译器,以指定生成库 DLL。

  1. 解决所有生成错误和警告,然后将程序集部署到测试服务器。

  2. 在测试服务器上打开SQL Server Management Studio。 创建一个新查询,连接到合适的测试数据库(如 AdventureWorks)。

  3. 通过将以下 Transact-SQL 添加到查询,在服务器中创建程序集。

CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE;

  1. 然后,必须在 SQL Server 实例中创建过程、函数、聚合、用户定义类型或触发器。 如果 HelloWorld 程序集在 Procedures 类中包含名为 HelloWorld 的方法,则可以将以下 Transact-SQL 添加到查询,以在 SQL Server 中创建名为 hello 的过程。

CREATE PROCEDURE hello

AS

EXTERNAL NAME HelloWorld.Procedures.HelloWorld

有关在 SQL Server 中创建不同类型的托管数据库对象的详细信息,请参阅 CLR User-Defined FunctionsCLR User-Defined聚合CLR User-Defined类型CLR 存储过程CLR 触发器

将程序集部署到生产服务器

在测试服务器上测试并验证了 CLR 数据库对象后,便可以将这些数据库对象分发到生产服务器。 有关调试托管数据库对象的详细信息,请参阅 调试 CLR 数据库对象

托管数据库对象的部署类似于常规数据库对象的部署, (表、Transact-SQL 例程等) 。 可以使用部署脚本将包含 CLR 数据库对象的程序集部署到其他服务器。 可以使用 Management Studio 的“生成脚本”功能生成部署脚本。 部署脚本也可以手动生成,或使用“生成脚本”功能生成然后手动更改。 生成部署脚本后,可以在SQL Server的其他实例上运行该脚本,以部署托管数据库对象。

使用“生成脚本”生成部署脚本

  1. 打开 Management Studio 并连接到注册要部署的托管程序集或数据库对象的 SQL Server 实例。

  2. 对象资源管理器中,展开<服务器名称和>数据库树。 右键单击注册托管数据库对象的数据库,选择“ 任务”,然后选择“ 生成脚本”。 将打开脚本向导。

  3. 从列表框中选择数据库,然后单击“ 下一步”。

  4. “选择脚本选项 ”窗格中,单击“ 下一步”,或更改选项,然后单击“ 下一步”。

  5. “选择对象类型 ”窗格中,选择要部署的数据库对象的类型。 单击“下一步”。

  6. 对于在“选择对象类型”窗格中选择的每个 对象类型 ,将显示“ 选择 <类型> ”窗格。 在此窗格中,可以从在指定数据库中注册的该数据库对象类型的所有实例中进行选择。 选择一个或多个对象,然后单击“ 下一步”。

  7. 选择所有所需的数据库对象类型后,会出现“ 输出选项 ”窗格。 选择 “脚本到文件 ”,并指定脚本的文件路径。 选择“下一页”。 查看所选内容,然后单击“ 完成”。 部署脚本将保存到指定的文件路径。

后期部署脚本

您可以运行后期部署脚本。

若要添加后期部署脚本,请在 Visual Studio 项目目录中添加一个名为 postdeployscript.sql 的文件。 例如,右键单击解决方案资源管理器中的项目,然后选择“添加现有项”。 将文件添加到项目的根目录,而不是 TestScripts 文件夹中。

单击“部署”时,Visual Studio 将在项目部署完成之后运行此脚本。

另请参阅

公共语言运行时 (CLR) 集成编程概念