Visibilidad del objeto y reglas de calificación

Al crear un objeto, MicrosoftSQL Server utiliza los siguientes valores predeterminados para las partes del nombre que no se especifican:

Parte no especificada

Valor predeterminado

Servidor

El valor predeterminado es el servidor local.

Base de datos

El valor predeterminado es la base de datos actual.

Schema_name

El valor predeterminado es el nombre de usuario de la base de datos especificada asociado al identificador de inicio de sesión de la conexión actual.

Por ejemplo, si un usuario ha iniciado una sesión en AdventureWorks como usuario propietario de la base de datos, dbo, cualquiera de las dos instrucciones siguientes creará una tabla llamada AdventureWorks.dbo.TableX:

CREATE TABLE TableX (cola INT PRIMARY KEY, colb NCHAR(3));
GO

O bien

CREATE TABLE AdventureWorks.dbo.TableX
      (cola INT PRIMARY KEY, colb NCHAR(3));
GO

[!NOTA]

Debe especificar el nombre completo de la tabla o vista para eliminar las posibles confusiones relacionadas con el objeto en cuestión.

Del mismo modo, cuando haga referencia a un objeto, SQL Server utilizará los siguientes valores predeterminados para las partes del nombre que no se especifican:

Parte no especificada

Valor predeterminado

Servidor

El valor predeterminado es el servidor local.

Base de datos

El valor predeterminado es la base de datos actual.

Schema_name

El valor predeterminado es el nombre de usuario de la base de datos especificada asociado al identificador de inicio de sesión de la conexión actual. Si ese usuario no es propietario de ningún objeto con el nombre de objeto especificado, SQL Server buscará un objeto con el nombre de objeto especificado que sea propiedad del usuario propietario de la base de datos (dbo).

Por ejemplo, suponga que LoginX se conecta a un servidor que tiene dos bases de datos: DBY y DBZ. LoginX está asociado con UserA de la base de datos DBY y con UserB de la base de datos DBZ.

LoginX ejecuta una instrucción SELECT en la base de datos actual del modo siguiente:

USE DBY
SELECT * FROM DBY..TableX

Puesto que LoginX está asociado con UserA en DBY, SQL Server buscará en primer lugar DBY.UserA.TableX. Si no hay ninguna tabla con este nombre, SQL Server buscará una tabla denominada DBY.dbo.TableX.

En el ejemplo siguiente, LoginX ejecuta una instrucción SELECT en una tabla que no se encuentra en la base de datos actual:

USE DBY;
GO
SELECT * FROM DBZ..TableY;
GO

Puesto que LoginX está asociado con UserB de la base de datos DBZ, SQL Server buscará en primer lugar DBZ.UserB.TableY. Si no hay ninguna tabla con este nombre, SQL Server buscará una tabla denominada DBZ.dbo.TableY.

[!NOTA]

SQL Server no intentará deducir quién es el propietario de las tablas remotas basándose en el inicio de sesión actual. Para asegurarse de que las consultas distribuidas se ejecutan correctamente, utilice nombres completos.

La visibilidad de los procedimientos almacenados que empiezan con sp_ es distinta de la visibilidad de los procedimientos almacenados normales. Para obtener más información, vea CREATE PROCEDURE (Transact-SQL).

Vea también

Conceptos