INF: Cadena de propiedad de objeto comprobación en bases de datos depende de la conexión que está asignado a los responsables de objeto

Seleccione idioma Seleccione idioma
Id. de artículo: 272424 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Los libros en pantalla de SQL Server indica que se comprueban las cadenas de propiedad para procedimientos almacenados y vistas que cruzan las bases de datos. Puede ver esto fácilmente cuando se asigna el propietario de los objetos dependientes de cada base de datos al mismo inicio de sesión. Sin embargo, si tiene usuarios en ambas bases de datos tienen el mismo nombre de usuario, pero no asigna el mismo inicio de sesión (como suele ocurrir con el propietario de base de datos [DBO]), puede parecer que se están comprobando incorrectamente las cadenas de propiedad. Por ejemplo, si el propietario de cada base de datos se asigna al mismo inicio de sesión y el propietario de los objetos de las bases de datos es el DBO, no se comprueban permisos. Sin embargo, si el propietario de cada base de datos se asigna a un inicio de sesión diferente, se comprueban las cadenas de propiedad. Esto puede suceder con usuarios que no sean el DBO, si los nombres de usuario son diferentes de los nombres de inicio de sesión.

Más información

Un usuario en una base de datos se puede conceder permisos en una vista o procedimiento almacenado. Si esa vista o procedimiento almacenado tiene acceso a objetos de otra base de datos que pertenece un usuario asignado a un inicio de sesión diferente, se comprueban los permisos de los objetos subyacentes. Si el usuario no tiene permisos para los objetos en la base de datos, se devuelve el error siguiente:
Error 229: % ls permiso denegado para el objeto ' %. * ls ', base de datos' %. * ls', propietario ' %. * ls'.
Sin embargo, si el inicio de sesión asignada subyacente de objetos de la consulta es la misma, no se comprueban los permisos y la consulta se ejecuta sin el error anterior incluso si el usuario no tiene permisos en las tablas subyacentes.

Para ver un ejemplo de esto, siga estos pasos:
  1. Establecer un entorno de reproducción con dos bases de datos diferentes; db1 es la base de datos "Base" con los datos y db2 contiene una vista que selecciona de la tabla en db1.
    USE master
    GO
    CREATE DATABASE db1
    CREATE DATABASE db2
    EXEC sp_addlogin Owner1
    EXEC sp_addlogin Owner2
    EXEC sp_addlogin TestUser
    GO
    -- setup database #1, DBO is Owner1
    USE db1
    EXEC sp_changedbowner Owner1
    EXEC sp_adduser TestUser
    CREATE TABLE BaseTable (TableColumn CHAR(20))
    INSERT BaseTable VALUES ('Select Succeeded')
    GO
    -- setup database #2
    USE db2
    EXEC sp_adduser TestUser
    GO
    CREATE VIEW      CrossDatabaseView           AS SELECT * FROM db1.dbo.BaseTable
    GO
    GRANT SELECT  ON CrossDatabaseView           TO public
    GO
    					
  2. Ejecutar el código siguiente para ver los distintos resultados en función de si el propietario es el mismo o diferentes:
    SET NOCOUNT ON
    GO
    PRINT '***** results with both DBOs the same *****'
    PRINT ''
    USE db2
    EXEC sp_changedbowner Owner1
    SETUSER 'TestUser'
    GO
    SELECT * FROM CrossDatabaseView
    GO
    SETUSER
    GO
    
    PRINT ''
    PRINT '***** results with each DBO different *****'
    PRINT ''
    USE db2
    EXEC sp_changedbowner Owner2
    SETUSER 'TestUser'
    GO
    SELECT * FROM CrossDatabaseView
    GO
    SETUSER
    GO
    					
  3. Limpiar las bases de datos de los inicios de sesión creadas para este ejemplo:
    USE master
    GO
    DROP DATABASE db1
    DROP DATABASE db2
    EXEC sp_droplogin Owner1
    EXEC sp_droplogin Owner2
    EXEC sp_droplogin TestUser
    GO
    					

Propiedades

Id. de artículo: 272424 - Última revisión: jueves, 05 de febrero de 2004 - Versión: 4.3
La información de este artículo se refiere a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Palabras clave: 
kbmt kbinfo kbpending KB272424 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 272424

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com