如何:为使用 SQL Server 公共语言运行时集成的数据库对象创建项目

Visual Studio 中的 SQL Server 项目可帮助您使用 .NET Framework 语言(例如 Visual Basic 和 Visual C#)来创建存储过程、触发器、聚合、用户定义的函数和用户定义的类型。SQL Server 项目需要引用 SQL Server 2005 或 SQL Server 的更高版本。 这些对象通常称为 SQL Server 公共语言运行时对象(或 SQL CLR 对象)。

重要说明重要事项

如果要为 SQL Server 2005 或 SQL Server 2008 开发 SQL CLR 程序集,则必须在开发计算机上安装 .NET Framework 3.5 版。 SQL Server 2005 和 SQL Server 2008 要求 SQL CLR 程序集以 .NET Framework 2.0、3.0 或 3.5 版为目标。 可以从 Microsoft 网站安装 Microsoft .NET Framework 3.5

创建 SQL CLR 数据库项目之后,请创建希望部署到 SQL Server 的数据库对象。 下表提供指向相关帮助主题的链接,这些主题详细讲述了如何创建可以使用的数据库对象:

数据库对象

信息

存储过程

如何:通过使用公共语言运行时集成创建和运行 SQL Server 存储过程

触发器

如何:通过使用公共语言运行时集成创建和运行 SQL Server 触发器

Aggregate

如何:通过使用公共语言运行时集成创建和运行 SQL Server 聚合

用户定义的函数

如何:通过使用公共语言运行时集成创建和运行 SQL Server 用户定义的函数

用户定义的类型

如何:通过使用公共语言运行时集成创建和运行 SQL Server 用户定义的类型

提示

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置

创建新项目

创建新的 SQL Server 项目

  1. 在**“文件”菜单上指向“新建”,并单击“项目”**。

  2. 在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。

  3. 在模板列表中,单击与要创建的项目的类型对应的图标。 例如,若要创建使用 Visual C# 的 SQL CLR 项目,请单击**“Visual C# SQL CLR 数据库项目”**。

  4. 在位于模板列表上方的目标 Framework 列表中,单击与您计划部署 SQL CLR 数据库项目的 SQL Server 版本对应的 .NET Framework 的版本。

    重要说明重要事项

    SQL Server 2005 和 SQL Server 2008 只支持使用 .NET Framework 2.0、3.0 或 3.5 版生成的 SQL Server 项目。 如果您尝试部署SQL Server项目,SQL Server 2005或SQL Server 2008,将显示错误消息: Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(在进行校验是您要部署的程序集的名称)。

  5. 在**“名称”**中,指定要用于项目的名称。

  6. 单击**“确定”**。

配置 SQL Server 项目

创建 SQL Server 项目之后,您可能需要修改若干项目属性,然后才能成功部署项目。

为 SQL Server 项目配置属性

  1. 在“解决方案资源管理器”中,选择要为其配置属性的项目。

  2. 在**“项目”菜单上,单击“ProjectName 属性”**,其中 ProjectName 是您为 SQL Server 项目赋予的名称。

  3. 在**“应用程序”选项卡上的“程序集”**名称中,指定要为从 SQL Server 项目中生成的程序集赋予的名称。

  4. 如果您计划部署 SQL CLR 数据库项目的 SQL Server 的版本支持已指定的 .NET Framework 版本,则可以跳到步骤 10。

  5. 如果您使用的是 Visual Basic,请跳到步骤 7。

  6. 在**“应用程序”选项卡上的“目标 Framework”**中,单击与您计划部署 SQL CLR 数据库项目的 SQL Server 版本对应的 .NET Framework 的版本。

    重要说明重要事项

    SQL Server 2005 和 SQL Server 2008 只支持使用 .NET Framework 2.0、3.0 或 3.5 版生成的 SQL Server 项目。 如果您尝试部署SQL Server项目,SQL Server 2005或SQL Server 2008,将显示错误消息: Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(在进行校验是您要部署的程序集的名称)。

  7. 跳到步骤 10(步骤 7、8 和 9 仅适用于您使用 Visual Basic 的情况)

  8. 在**“编译”选项卡上,单击“高级编译选项”**。

  9. 在**“高级编译器设置”对话框的“目标 Framework”**中,单击与您计划部署 SQL CLR 数据库项目的 SQL Server 版本对应的 .NET Framework 的版本。

    重要说明重要事项

    SQL Server 2005 和 SQL Server 2008 只支持使用 .NET Framework 2.0、3.0 或 3.5 版生成的 SQL Server 项目。 如果您尝试部署SQL Server项目,SQL Server 2005或SQL Server 2008,将显示错误消息: Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(在进行校验是您要部署的程序集的名称)。

  10. 单击**“确定”**。

  11. 在**“数据库”选项卡上的“程序集所有者”**中,键入作为程序集所有者的用户或角色的名称。

    重要说明重要事项

    此值必须是当前用户所属的角色的名称,或者是必须具有 IMPERSONATE 权限的当前用户的名称。 如果未指定程序集所有者,则所属权将授予当前用户。 此设置对应于 SQL Server CREATE ASSEMBLY 语句的 AUTHORIZATION 所有者名称 参数。 有关更多信息,请参见 Microsoft 网站上的 CREATE ASSEMBLY (Transact-SQL)

  12. 在**“文件”菜单上,单击“全部保存”**。

    如果要创建利用 XML 序列化的 SQL CLR 对象,请执行“创建使用 XML 序列化的 SQL CLR 对象”中所述的以下附加步骤。

创建使用 XML 序列化的 SQL CLR 对象

如果要创建 Web 服务,您可以在生成属性中将“生成序列化程序集”选项设置为“开”。 但是,在部署包含 SQL CLR 对象的程序集时,将不会在目标服务器上创建 XML 序列化程序集。 必须向 PostDeployScript.sql 脚本中添加一条语句才能创建该程序集。

提示

如果要创建 Web 服务,您必须将权限集设置为 External_Access 或 Unsafe,并且目标数据库的“可信”设置必须设置为“开”。

针对 SQL CLR 程序集创建 XMLSerializer 程序集

  1. 在“解决方案资源管理器”中,展开要部署的 SQL CLR 项目,并双击 PostDeployScript.sql 脚本。

  2. 在代码编辑器中,将以下 Transact-SQL 语句添加到脚本:

    CREATE ASSEMBLY SqlClassLibraryXML from 'path\assemblyname.XmlSerializers.dll' 
    

    其中 SqlClassLibraryXML 是您要赋予程序集的名称,path 是序列化程序程序集的路径,而 assemblyname.XmlSerializers.dll 是序列化程序程序集的名称。

  3. 在**“文件”菜单上,单击“保存 PostDeployScript.dll”**。

连接到 SQL Server 数据库

SQL CLR 数据库项目需要连接到在 SQL Server 2005 或更高版本上运行的数据库。 如果**“服务器资源管理器”中提供了到 SQL Server 2005 数据库的连接,则将在“添加数据库引用”**对话框中列出这些连接。 如果计划使用数据库项目 (.dbproj) 部署从 SQL Server 项目生成的程序集,则不必指定数据库连接,并可在连接对话框中单击“取消”。 有关更多信息,请参见开始引用 SQLCLR 对象的数据库的团队开发

连接到 SQL Server 数据库

  • 通过完成**“添加连接”/“修改连接”**对话框可以连接到 SQL Server 2005 或 SQL Server 2008 数据库。 有关更多信息,请参见添加/修改连接 (Microsoft SQL Server)

    - 或 -

    在**“添加数据库引用”**对话框中选择一个现有数据库连接以用于 SQL Server 项目。 有关更多信息,请参见“添加数据库引用”对话框

请参见

任务

演练:使用托管代码创建存储过程

如何:调试 SQL CLR 存储过程

参考

SQL CLR 数据库项目和数据库对象的特性

概念

SQL Server CLR 集成简介 (ADO.NET)

使用托管代码创建数据库对象的好处

在托管代码中创建 SQL Server 对象