usuarios usuario sirven seguridad que permisos para los esquemas esquema ejemplo dar create creacion consultar autorizacion administrador sql sql-server schema

usuario - establecer el esquema predeterminado para una consulta sql



sql server dar permisos usuario (5)

¿Hay alguna forma de establecer el esquema para una consulta para que en el resto de la consulta pueda referirme a las tablas solo por su nombre sin agregarles un nombre de esquema?

Por ejemplo, me gustaría hacer algo como esto:

Use [schemaName] select * from [tableName]

a diferencia de esto:

select * from [schemaName].[tableName]


Lo que a veces hago cuando necesito muchos nombres de tablas solo los obtengo más su esquema de la tabla del sistema INFORMATION_SCHEMA: value

select TABLE_SCHEMA + ''.'' + TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME in (*select your table names*)


No creo que haya una forma "por consulta" para hacer esto. (Puede usar la palabra clave use para especificar la base de datos , no el esquema, pero técnicamente es una consulta separada ya que debe emitir el comando go después).

Recuerde que en el servidor SQL, los nombres de tabla totalmente calificados están en el formato:

[base de datos]. [esquema]. [tabla]

En SQL Server Management Studio puede configurar todos los valores predeterminados que está solicitando.

  • Puede configurar la database de database predeterminada por usuario (o en su cadena de conexión):

    Seguridad> Inicio de sesión> (clic con el botón derecho) usuario> Propiedades> General

  • Puede configurar el schema predeterminado por usuario (pero no creo que pueda configurarlo en su cadena de conexión, aunque si usa dbo siempre es el predeterminado):

    Seguridad> Inicio de sesión> (clic con el botón derecho) usuario> Propiedades> Asignación de usuarios> Esquema predeterminado

En resumen, si utiliza dbo para su esquema, es probable que tenga la menor cantidad de dolores de cabeza.


Otra forma de agregar el esquema de forma dinámica o si desea cambiarlo a otra cosa

DECLARE @schema AS VARCHAR(256) = ''dbo.'' --User can also use SELECT SCHEMA_NAME() to get the default schema name DECLARE @ID INT declare @SQL nvarchar(max) = ''EXEC '' + @schema +''spSelectCaseBookingDetails @BookingID = '' + CAST(@ID AS NVARCHAR(10))

No es necesario emitir @ID si es nvarchar o varchar

ejecutar (@SQL)


Pruebe setuser. Ejemplo

declare @schema nvarchar (256) set @schema=( select top 1 TABLE_SCHEMA from INFORMATION_SCHEMA.TABLES where TABLE_NAME=''MyTable'' ) if @schema<>''dbo'' setuser @schema


Un google rápido me indicó esta página . Explica que desde SQL server 2005 en adelante puede establecer el esquema predeterminado de un usuario con la instrucción ALTER USER. Desafortunadamente, eso significa que lo cambia permanentemente, por lo que si necesita cambiar entre esquemas, deberá configurarlo cada vez que ejecute un procedimiento almacenado o un lote de instrucciones. Alternativamente, puede usar la técnica que se describe here .

Si está utilizando SQL Server 2000 o una versión anterior, esta página explica que los usuarios y los esquemas son equivalentes. Si no antepone su nombre de tabla con un esquema / usuario, el servidor sql primero verá las tablas propiedad del usuario actual y las que posee el dbo para resolver el nombre de la tabla. Parece que para todas las demás tablas debe anteponer el esquema / usuario.