使用标识符作为对象名称
完整的对象名称由四个标识符组成:服务器名称、数据库名称、架构名称和对象名称。其格式如下:
[ [ [ server. ] [ database ] . ] [ schema_name ] . ] object_name
服务器、数据库和所有者的名称即所谓的对象名称限定符。引用对象时,不必指定服务器、数据库和所有者。可以用句点标记它们的位置来省略限定符。对象名称的有效格式包括以下几种:
- server.database.schema_name.object_name
- server.database..object_name
- server..schema_name.object_name
- server...object_name
- database.schema_name.object_name
- database..object_name
- schema_name.object_name
- object_name
指定了所有四个部分的对象名称称为完全限定名称。在 Microsoft SQL Server 2005 中创建的每个对象必须具有唯一的完全限定名称。例如,如果所有者不同,同一个数据库中可以有两个名为 xyz 的表。
大多数对象引用使用由三个部分组成的名称。默认服务器为本地服务器。由四个部分组成的名称通常用于分布式查询或远程存储过程调用。它们使用的格式如下:
linkedserver.catalog.schema.object_name
下表列出了各部分的名称及其说明。
部分名称 | 说明 |
---|---|
linkedserver |
包含分布式查询所引用对象的链接服务器的名称。 |
catalog |
包含分布式查询所引用对象的目录的名称。 |
schema |
包含分布式查询所引用对象的架构的名称。 |
object_name |
对象名称或表名称。 |
对于分布式查询,由四个部分构成的名称的服务器部分是指链接服务器。链接服务器是由 sp_addlinkedserver 定义的服务器名称。链接服务器可标识 OLE DB 访问接口和 OLE DB 数据源,该数据源返回 Microsoft SQL Server 2005 将其作为 Transact-SQL 语句的一部分使用的记录集。
若要确定包含 OLE DB 数据源的组件中哪些可以用于名称的目录和架构部分,请参阅为链接服务器指定的 OLE DB 访问接口的文档。如果链接服务器正在运行 SQL Server 实例,则目录名称是包含该对象的数据库的名称,架构名称是该对象所有者的名称。有关由四个部分构成的名称和分布式查询的详细信息,请参阅分布式查询。
对于远程过程调用,由四个部分构成的名称的服务器部分是指远程服务器。用 sp_addserver 指定的远程服务器是 SQL Server 实例,该实例可通过本地服务器访问。可以使用以下格式的过程名称在远程服务器上执行存储过程:
server.database.schema_name.procedure
使用远程存储过程时,对象名称需要包含所有四个部分。有关远程服务器的详细信息,请参阅配置远程服务器。
使用标识符引用列
同一个表或视图内的列名称必须唯一。最多可以使用三个前缀来指定查询中的列,查询中引用的多个表可以具有同名称的列。可以使用下列格式之一:
database_name.schema_name.object_name.column_name
database_name..object_name.column_name
schema_name.object_name.column_name
object_name.column_name
引用用户定义类型的列的列属性
通过在列名称和属性名称之间使用句点分隔符 (.) 来引用用户定义类型的列的属性。引用属性名称时,还可以引用表或视图标识符,但不能引用数据库或架构标识符。可以使用下列格式:
column_name.property_name1.property_name2...
object_name.column_name.property_name1.property_name2...
请参阅
其他资源
FROM (Transact-SQL)
Transact-SQL 语法约定 (Transact-SQL)