当创建对象时,Microsoft® SQL Server™ 2000 对未指定的名称部分使用下列默认值:
例如,如果用户作为数据库所有者 (dbo) 用户登录到 Northwind,则下面两个语句的任何一个都将创建一个名为 Northwind.dbo.TableX 的表:
CREATE TABLE TableX (cola INT PRIMARY KEY, colb NCHAR(3))
-或-
CREATE TABLE Northwind.dbo.TableX
(cola INT PRIMARY KEY, colb NCHAR(3))
说明 建议指定完整的表名或视图名,以避免产生与提及对象有关的混淆。
同样,当引用对象时,Microsoft® SQL Server™ 对未指定的名称部分使用下列默认值:
例如,假定 LoginX 所连接的服务器上有两个数据库:DBY 和 DBZ。LoginX 与数据库 DBY 中的 UserA 以及数据库 DBZ 中的 UserB 相关联。
LoginX 在当前数据库中执行一个 SELECT 语句:
USE DBY
SELECT * FROM DBY..TableX
由于 LoginX 与 DBY 中的 UserA 相关联,SQL Server 首先查找 DBY.UserA.TableX。如果没有具有这个名称的表,SQL Server 将查找表 DBY.dbo.TableX。
在下一个例子中,LoginX 在当前数据库中没有的表上执行 SELECT 语句:
USE DBY
SELECT * FROM DBZ..TableY
由于 LoginX 与 DBZ 中的 UserB 相关联,SQL Server 首先查找 DBZ.UserB.TableY。如果没有具有这个名称的表,SQL Server 将查找表 DBZ.dbo.TableY。
说明 SQL Server不会尝试根据当前的登录来推断远程表的所有者。为确保分布式查询能够正确执行,请使用完全合法的名称。
以 sp_ 开始的存储过程的可见性与标准存储过程的可见性不同。有关更多信息,请参见 CREATE PROCEDURE。