数据库对象使用概述
更新:2007 年 11 月
数据库对象定义数据库内容的结构。它们包含在数据库项目中,数据库项目还可以包含数据生成计划和脚本。在“解决方案资源管理器”中,数据库对象在文件中定义,并在数据库项目中的“架构对象”子文件夹下根据类型分组。使用数据库对象时,您可能会发现使用名为“架构视图”的数据库对象视图会更加直观。在“架构视图”中,您可以看到按类别划分的数据库对象。如果数据库项目中的文件标记为“生成”Build Type,则将分析该文件以查看它是否包含数据库对象定义。数据库项目中包含的标记为其他 Build Type 的文件不被视为包含数据库对象且不在“架构视图”中显示的文件。
解决方案资源管理器
在“解决方案资源管理器”中,可以对项目中包含的文件进行操作。在“解决方案资源管理器”中,可以对“架构对象”子文件夹中的子文件夹执行以下操作:
- 添加 - 将指定类型的项添加到数据库项目层次结构中的相应位置。
可以对“解决方案资源管理器”的子文件夹中的所有文件执行以下操作:
打开 - 在 Transact-SQL (T-SQL) 编辑器中打开文件。
剪切 - 将文件复制到剪贴板并从数据库项目中移除。
复制 - 将文件复制到剪贴板。
删除 - 将文件从数据库项目中永久移除。
重命名 - 重命名所选文件。
在架构视图中查看对象 - 在“架构视图”中选择所选文件中包含的对象。如果“架构视图”尚未显示,此时将显示该视图。
属性 - 显示“属性”窗口,该窗口列出了文件的属性。
您可以对某些对象类型执行其他操作,具体取决于对象的类型。
架构视图
在“架构视图”中,可以对数据库对象进行操作。在“架构视图”中,可以对“架构对象”子文件夹中的子文件夹执行以下操作:
- 添加 - 将指定类型的对象添加到数据库项目层次结构中的相应位置。
可以对这些子文件夹中的所有数据库对象执行以下操作:
打开 - 在 T-SQL 编辑器中打开此对象的定义。
剪切 - 将对象复制到剪贴板并从数据库项目中移除。
复制 - 将对象复制到剪贴板。
删除 - 将项从数据库项目中移除。
重构:重命名 - 根据数据库重构的原则重命名所选项及其依赖项。
属性 - 显示“属性”窗口,该窗口列出了对象的属性。
对象名解析
通常,用来解析对象名的规则应当与 SQL Server 使用的规则相同。某些 sysobject 可能需要完全限定才能正确解析。如果在涉及到未完全限定的对象名时遇到错误或者注意到异常行为,则应当通过完全限定对象名来尝试解决该问题。
在对象定义中引用数据库名称
可以在数据库项目的对象定义脚本中使用 $(databasename) 标记,但存在以下限制:
必须将该标记括在方括号中,如下面的示例所示:
[$(databasename)]
不能使用该标记来指定由三部分组成的名称,如下面的示例所示:
[$(databasename)].[dbo].[Table1]
下面的示例演示如何在存储过程中使用 $(databasename) 标记:
CREATE PROCEDURE [dbo].[MyProcedure]
@param1 INT = 0,
@param2 INT
AS
ALTER DATABASE [$(databasename)]
MODIFY FILEGROUP [FileGroup1] DEFAULT
RETURN 0
对象级别的 SET 选项
除了可以为数据库项目设置的 SET 选项之外,还可以为各个数据库对象的两个选项指定值。这两个选项是 ANSI Null 和带引号的标识符。创建数据库对象时,默认情况下此对象的 SET 选项与数据库项目的 SET 选项匹配。可以将这两个选项设置为以下三个值之一:项目默认值、On 或 Off。生成数据库项目时,只将未设置为项目默认值的对象级别的 SET 选项编入生成脚本。
说明: |
---|
使用“导入脚本”或“导入数据库架构”命令时,不为各个数据库对象导入 SET 选项的值。必须在“属性”窗口中设置这些值。有关更多信息,请参见如何:指定对象级 SET 选项。 |
数据库对象验证
当保存对新的或修改过的数据库对象的更改时,验证将发生。对象定义中的任何错误都会显示在“错误列表”窗口中。如果双击错误信息,会打开对象定义,这样您可以更正错误。包含错误的数据库对象在“架构视图”中它们的图标上显示一个红色的感叹号。
说明: |
---|
目前尚不支持的数据库对象在其图标上显示一个黄色的倒三角形。 |
有关如何解决数据库对象问题的更多信息,请参见关于数据库项目、生成和部署问题的疑难解答。
架构视图中的架构对象类型
数据库项目包含数据库架构中所有对象的定义。特定对象类型列表和可以对这些对象类型所进行的操作取决于所运行的 Microsoft SQL Server 的版本。
对象类型 |
SQL Server 2000 |
SQL Server 2005 |
---|---|---|
表 |
支持 |
支持 |
视图 |
支持 |
支持 |
同义词 |
|
支持 |
存储过程 |
支持 |
支持 |
函数 |
支持 |
支持 |
数据库触发器 |
|
支持 |
程序集 |
|
支持 |
类型:用户定义的数据类型 |
支持 |
支持 |
类型:用户定义的类型 (CLR) |
|
支持 |
类型:XML 架构集合 |
|
支持 |
Service Broker |
|
支持 |
Service Broker:消息类型 |
|
支持 |
Service Broker:协定 |
|
支持 |
Service Broker:队列 |
|
支持 |
Service Broker:服务 |
|
支持 |
Service Broker:路由 |
|
支持 |
Service Broker:事件通知 |
|
支持 |
Service Broker:远程服务绑定 |
|
支持 |
存储:全文目录 |
支持 |
支持 |
存储:分区方案 |
|
支持 |
存储:分区函数 |
|
支持 |
存储:文件组 |
支持 |
支持 |
安全性 |
支持 |
支持 |
安全:用户 |
支持 |
支持 |
安全:角色 |
支持 |
支持 |
安全:角色:数据库角色 |
支持 |
支持 |
安全:角色:应用程序角色 |
支持 |
支持 |
安全:架构 |
支持 |
支持 |
孤立对象
“架构视图”中的“孤立对象”文件夹是对象的临时位置,这些对象与其他当前不在该项目中定义的对象相关联。例如,如果在一个表上创建了一个索引,但是该表并不存在或者当前无效,则该索引将显示在“孤立对象”文件夹中。当创建了父对象(或当其成为有效的父对象)时,子对象将显示在该项目中的正确位置。
本节内容
如何:从脚本导入数据库对象
介绍如何从可能已经存在的现有 T-SQL 脚本中导入数据库定义。如何:查看数据库对象
描述如何显示“架构视图”,该视图显示按对象(而非文件)组织的数据库项目的内容。如何:创建数据库对象
介绍如何创建数据库对象,如表、视图和存储过程。如何:向特定架构中添加数据库对象
介绍可用于向特定架构添加数据库对象的三种方法的优缺点。如何:修改数据库对象
介绍如何修改数据库对象(如表、视图和存储过程)的定义。如何:删除数据库对象
介绍如何从数据库项目中删除数据库对象。如何:向角色中添加用户
描述如何将数据库用户与后期部署脚本中的角色相关联。如何:定义全文目录
描述如何针对特定的文件组定义全文目录。如何:指定对象级 SET 选项
描述如何为单个数据库对象设置 ANSI null 和带引号的标识符选项以重写数据库项目设置。数据库对象模板概述
提供有关可用于创建数据库对象和数据库脚本的模板的背景信息。