您的位置:首页 > 数据库

创建和部署使用 SQL CLR 对象的数据库项目

2013-09-02 10:37 483 查看

演练:创建和部署使用 SQL CLR 对象的数据库项目

数据库sqlsql serverassemblyproperties配置管理

目录(?)[+]

创建数据库项目

创建 SQL CLR 项目

定义自定义 SQL CLR 数据类型

配置和生成 SQL CLR 程序集

添加对 SQL CLR 程序集的引用

定义新数据类型

在表定义中使用新的数据类型

配置生成设置

配置部署设置

生成和部署数据库项目

将项目添加到版本控制中

若要创建和部署使用 SQL Server 公共语言运行时 (SQL CLR) 程序集的数据库,需要首先创建一个数据库项目和一个 SQL CLR 项目。 生成和部署数据库项目时,将同时自动部署该项目所引用的 SQL CLR 程序集。

在本演练中,您将执行以下任务:

创建简单的数据库项目

创建 SQL CLR 项目并定义新的数据类型

使用在 SQL CLR 程序集中定义的类型

生成和部署数据库项目

系统必备

若要完成此演练,您必须安装了 Visual Studio 2010 高级专业版。您必须具有对 SQL Server 2005 或 SQL Server 2008 的实例的访问权限。 必须已从CodePlex Web site(CodePlex 网站)安装 SQL Server 的代码示例。 必须拥有将数据库部署到数据库服务器的权限。

创建一个数据库项目

创建数据库项目

在“文件”菜单上指向“新建”,再单击“项目”。

将显示"新建项目"对话框。

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


注意
如果使用的是 Visual Studio 2010 专业版,则还必须先展开“高级”节点,然后单击“SQL Server”。

在模板列表中单击“SQL Server 2008 数据库项目”。

在“名称”中键入“SQLClrDatabaseSandbox”。


重要事项
不要更改“位置”和“解决方案名称”中的默认值。

如果“创建解决方案的目录”复选框尚未选中,则选择该复选框。

如果“添加到源代码管理”复选框尚未清除,则清除该复选框,并单击“确定”。

此时“解决方案资源管理器”中将出现一个空的数据库项目。

接下来,将为 SQL CLR 程序集创建项目。

创建一个 SQL CLR 项目

创建 SQL CLR 项目

在“文件”菜单上指向“添加”,然后单击“项目”。

将显示"新建项目"对话框。

在“项目类型”中,展开“数据库”节点,然后单击“SQL Server”。

在“模板”列表中,单击“Visual Basic SQL CLR 数据库项目服务器项目”或“Visual C# SQL CLR 数据库项目”。

在“名称”中键入“SupportingSQLClrObjects”。

单击“确定”接受默认位置,关闭对话框并创建项目。

此时“解决方案资源管理器”中将出现一个空的数据库项目。

在“添加数据库引用”对话框中单击“取消”。

单击“取消”后,数据库项目能够确定在何处部署程序集。

接下来,将在 SQL CLR 程序集中创建自定义数据类型。

定义自定义 SQL CLR 数据类型

在“项目”菜单上单击“添加用户定义的类型”。

将显示“添加新项”对话框。

在“名称”中键入“MyCustomType.cs”。

代码编辑器将打开并显示 MyCustomType.cs 的内容。


注意
此时,您应当修改默认的用户定义类型,以便提供符合要求的实现。 在本演练中,您将接受默认实现。 有关如何定义自定义类型和其他 SQL CLR 对象的更多信息,请参见 Microsoft 网站上的以下主题:Using CLR Integration in SQL Server 2005(在 SQL Server 2005 中使用 CLR 集成)。

在“文件”菜单上单击“保存 MyCustomType.cs”。

配置和生成 SQL CLR 程序集

在“生成”菜单上单击“配置管理器”。

将显示“配置管理器”对话框。

在“项目上下文”中,清除 SupportingSQLClrObjects 程序集对应行中的“部署”复选框。

通过清除该复选框,可以在部署解决方案时防止部署该程序集。 该程序集将随数据库项目一起部署,因此您无需将其部署两次。

单击“关闭”。

在“解决方案资源管理器”中,右击 SupportingSQLClrObjects 项目,再单击“生成”。

将生成该程序集,并且不发生任何错误。

接下来,将引用新程序集,并使用在该程序集中定义的类型。

使用在 SQL CLR 程序集中定义的类型

若要使用在 SQCLR 程序集中定义的类型,必须从您的数据库项目添加对该程序集的引用。 然后,在数据库项目中定义该数据类型,以便在对象定义中使用此新数据类型。

添加对 SQL CLR 程序集的引用

在“解决方案资源管理器”中,展开 SQLClrDatabaseSandbox 项目,右击“引用”节点,然后单击“添加引用”。


注意
也可在“解决方案资源管理器”中单击 SQLClrDatabaseSandbox 项目,打开“项目”菜单,然后单击“添加引用”。

将打开“添加引用”对话框。

在“项目”选项卡上,确认 SupportingSQLClrObjects 项目突出显示,然后单击“确定”。

对 SQL CLR 项目的引用即添加到您的数据库项目中。

在“解决方案资源管理器”中,展开“引用”节点,单击 SupportingSQLClrObjects 节点,然后按 F4。

将显示该引用的属性。

确认“复制本地”设置为“True”,并且“权限级别”设置为“安全”。

在“程序集名称”属性中,将 SqlClassLibrary 替换为 SupportingSQLClrObjects。

在“所有者”属性中,键入 dbo。

可以指定不同的所有者。

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

指定的属性可对生成项目时创建的 CREATE ASSEMBLY 语句进行控制。

接下来,将对使用由 SQL CLR 项目生成的程序集的数据类型进行定义。

定义新数据类型

在“视图”菜单上,单击“错误列表”和“数据库架构视图”。

依次展开“SQLClrDatabaseSandbox”节点、“架构”节点、“dbo”节点和“可编程性”节点。

右击“类型”节点,指向“添加”,然后单击“用户定义的类型 CLR”。

将显示“添加新项”对话框。

在“模板”中,确认“用户定义的类型(CLR)”突出显示。

在“名称”中,键入 MyCustomType,然后单击“添加”。

将显示 Transact-SQL 编辑器,其中显示该类型的定义。 在“错误列表”窗口中显示以下错误:

SR0029 : Microsoft.Validation : User Defined Type: [dbo].[MyCustomType] has an unresolved reference to Assembly [assembly_name]


在 Transact-SQL 编辑器中,更新代码以匹配以下内容:

CREATE TYPE [dbo].[MyCustomType]
EXTERNAL NAME [SupportingSQLClrObjects].[MyCustomType]


在“文件”菜单上单击“保存 MyCustomType.udtclr.sql”。

在“错误列表”窗口中,该错误将消失,因为您已更新类型定义,引用了有效的程序集和类。

接下来,将定义使用新数据类型的简单表。

在表定义中使用新的数据类型

在“架构视图”中,打开“架构”节点,再打开“dbo”节点。

右击“表”节点,指向“添加”,然后单击“表”。

将显示“添加新项”对话框。

在“模板”中,确认“表”突出显示。

在“名称”中,键入 SimpleTable,然后单击“添加”。

将显示 Transact-SQL 编辑器,其中显示该表的定义。

在 Transact-SQL 编辑器中,更新代码以匹配以下内容:

CREATE TABLE [dbo].[SimpleTable]
(
column_1 int NOT NULL,
column_2 [dbo].[MyCustomType] NULL
)


在“文件”菜单上单击“保存 dbo.SimpleTable.table.sql”。

接下来,将配置数据库项目,然后将其部署到独立开发环境中。

生成和部署数据库项目

配置生成设置

在“解决方案资源管理器”中单击“SQLClrDatabaseSandbox”。

在“项目”菜单上单击“SQLClrDatabaseSandbox 属性”。

单击“生成”选项卡,然后检查默认设置。

在本演练中,可以使用默认设置。

接下来将配置部署设置。

配置部署设置

单击“部署”选项卡。

在“部署操作”列表中,单击“创建部署脚本(.sql)并部署到数据库”。

在“配置部署设置”列表中,单击“我的独立开发环境”。

通过指定此设置,可配置仅影响独立开发环境的值。 您将不更改数据库项目的设置。

在“部署脚本名称”中,接受默认值。

在“目标数据库设置”中,单击“编辑”指定目标连接。

在“连接属性”对话框中,指定到要部署此数据库项目的服务器和数据库的连接,然后单击“确定”。

在“目标数据库名称”中,接受默认值。

在“部署配置文件”列表中,单击“Properties\Database.deploymentconfig”。

默认情况下,独立开发环境不会关联一组详细的开发设置。 指定此文件时,将使用与数据库项目关联的部署设置。 您也可以创建单独的配置文件,并针对独立开发环境修改设置。

在“SQL 命令变量文件”列表中,单击“Properties\Database.sqlcmdvars”。

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

接下来将生成数据库项目。

生成和部署数据库项目

在“生成”菜单上,单击“生成解决方案”。

将成功生成数据库项目和 SQL CLR 程序集项目。

在“生成”菜单上单击“部署解决方案”。

此时数据库项目和 SQL CLR 程序集将部署到您在部署设置中指定的目标服务器和数据库。 “输出”窗口中将显示以下消息:

========== 部署: 成功 1 个,失败 0 个,跳过 1 个 ==========。

数据库项目部署成功。 部署数据库项目的同时,也部署了 SQL CLR 程序集。 由于无需单独部署 SQL CLR 程序集,因此在部署解决方案时跳过了该程序集。

使项目可供团队使用(可选)

将项目添加到版本控制中

在“解决方案资源管理器”中,单击“SQLClrDatabaseSandbox”节点。

在“文件”菜单上,指向“源代码管理”,然后单击“将解决方案添加到源代码管理”。

此时,您将与已安装的版本控制软件进行交互。 本演练提供了将项目添加到 Visual Studio Team Foundation Server 的步骤。 如果要使用不同的版本控制软件,请替换等效步骤。 如果您使用的是 Team Foundation Server,将出现“连接到 Team Foundation Server”对话框。

在“连接到 Team Foundation Server”中,单击承载要向其添加解决方案的团队项目的服务器。


注意
如果没有可将数据库项目添加到的团队项目,请参见计划和跟踪项目

在“团队项目”中单击要将数据库项目添加到其中的团队项目,再单击“确定”。

将显示“向源代码管理中添加解决方案 SQLClrDatabaseSandbox”对话框。

单击“确定”接受默认值。

您的数据库项目及其包含的文件将置于版本控制之下。 最初,它们仍处于签出状态。 只有在您将它们签入后其他团队成员才能访问它们。

在“视图”菜单上,指向“其他窗口”,然后单击“挂起的更改”。

将出现“挂起的更改”窗口。

在“注释”字段中键入“初始数据库项目创建”。

在“挂起的更改”窗口中,单击工具栏上的“签入”。

在签入数据库项目及其包含的文件的过程中,将显示“签入进度”对话框。 在“解决方案资源管理器”中,图标将会更改,以表明文件已签入到版本控制中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐