none
Crear rol DBA RRS feed

  • Pregunta

  • Buenas,

    Quisiera saber qué permisos debo otorgar a un Rol llamado DBA_INS para que tenga control total de una instancia tal como lo hace el login sa.

    Por otro lado, tengo un rol DBA_DB para que tenga control total de una BD específica.

    En Oracle existe un rol llamado DBA y simplemente se otorga este rol a los usuario para que tengan control total de una BD pero en SQL Server al parecer debe crearse manualmente este.

    Por favor si me explican, muchas gracias.

    miércoles, 14 de diciembre de 2016 22:35

Respuestas

  • DBA_INS aquí ese rol es sysadmin

    DBA_DB es db_owner


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    jueves, 15 de diciembre de 2016 7:58
    Moderador
  • [...] En Oracle existe un rol [...] y simplemente se otorga este rol a los usuario para que tengan control total de una BD pero en SQL Server al parecer debe crearse manualmente este.

    No, en SQL Server no hay que crearlo manualmente. Ya viene creado en origen. Para las bases de datos, el rol se llama db_owner. Cualquier usuario que hagas miembro de este rol tiene control total sobre la base de datos. Y similarmente, a nivel de instancia existe el rol sysadmin. Cualquier login que hagas miembro de sysadmin tiene control total sobre esa instancia, y de hacho así es como funciona el sa, que tiene control total precisamente debido a que es miembro del rol sysadmin. Nótese que los logins que son miembros de sysadmin automáticamente se mapean al usuario dbo en todas las bases de datos.
    jueves, 15 de diciembre de 2016 8:14
  • No puedes hacer un "create user...with password..." salvo que se trate de un "Contained Database". Con una base de datos "normal", la password siempre tiene que pertenecer a un Login. Después el Login se mapea a un "user", por lo que harías un "create user... from Login ...".

    Entiendo,esa era la razón por la que no me permitía siquiera crear el usuario con password, y tuve que recrear la BD con la opción CONTAINED PARTIAL y ya me permitió crear el usuario con password pero al parecer no es recomendable.

    Entonces, he creado el LOGIN de la siguiente manera:

    IF EXISTS(SELECT * FROM MASTER.SYS.SYSLOGINS A WHERE A.NAME = 'USR_SGPDB_001')
    	DROP LOGIN [USR_SGPDB_001]
    	GO
    
    CREATE LOGIN USR_SGPDB_001 WITH PASSWORD='USR_SGPDB_001_PASS',
    	
    	DEFAULT_DATABASE=[SGPDB],
    	
    	DEFAULT_LANGUAGE=[ESPAÑOL],
    	
    	CHECK_EXPIRATION=ON,
    	
    	CHECK_POLICY=ON
    GO

    Sin embargo, no logra conectar, debo comentar la opción DEFAULT_DATADBASE para que sí permita conectar, pero la idea es que deseo establecer una BD por defecto a dicho inicio de sesión

    Edito: Ya logré hacer que el usuario conecte, estaba intentando conectar a través del LOGIN y no era posible, tuve que asociarlo a un usuario de BD (SGPDB) y ya pudo contectar.

    Muchas gracias.



    domingo, 18 de diciembre de 2016 14:31

Todas las respuestas

  • DBA_INS aquí ese rol es sysadmin

    DBA_DB es db_owner


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    jueves, 15 de diciembre de 2016 7:58
    Moderador
  • [...] En Oracle existe un rol [...] y simplemente se otorga este rol a los usuario para que tengan control total de una BD pero en SQL Server al parecer debe crearse manualmente este.

    No, en SQL Server no hay que crearlo manualmente. Ya viene creado en origen. Para las bases de datos, el rol se llama db_owner. Cualquier usuario que hagas miembro de este rol tiene control total sobre la base de datos. Y similarmente, a nivel de instancia existe el rol sysadmin. Cualquier login que hagas miembro de sysadmin tiene control total sobre esa instancia, y de hacho así es como funciona el sa, que tiene control total precisamente debido a que es miembro del rol sysadmin. Nótese que los logins que son miembros de sysadmin automáticamente se mapean al usuario dbo en todas las bases de datos.
    jueves, 15 de diciembre de 2016 8:14
  • Gracias Miguel y Alberto por responder. Funciona excelente agregar un login member al rol sysadmin para tener control total sobre una instancia. Por otro lado, estoy tratando de crear un usuario de BD con contraseña, de la siguiente manera:

    USE [SGPDB]
    GO
    
    IF EXISTS(SELECT * FROM SYS.database_principals A WHERE A.NAME = 'USR_SGPDB_001')
    	DROP USER [USR_SGPDB_001]
    	GO
    	
    CREATE USER USR_SGPDB_001 WITH PASSWORD='USR_SGPDB_001_PASS',
    
    	DEFAULT_LANGUAGE=[ESPAÑOL]
    GO

    Y lo asigno al rol db_owner de la siguiente manera:

    EXEC SGPDB.sys.sp_addrolemember 'DB_OWNER', 'USR_SGPDB_001'
    GO

    Pero no logra conectar, arroja el siguiente error:

    Estoy colocando las credenciales correctamente pero no logra conectar, estaba pensando que quizás necesita algún permiso adicional.

    domingo, 18 de diciembre de 2016 5:18
  • No puedes hacer un "create user...with password..." salvo que se trate de un "Contained Database". Con una base de datos "normal", la password siempre tiene que pertenecer a un Login. Después el Login se mapea a un "user", por lo que harías un "create user... from Login ...".
    domingo, 18 de diciembre de 2016 11:01
  • No puedes hacer un "create user...with password..." salvo que se trate de un "Contained Database". Con una base de datos "normal", la password siempre tiene que pertenecer a un Login. Después el Login se mapea a un "user", por lo que harías un "create user... from Login ...".

    Entiendo,esa era la razón por la que no me permitía siquiera crear el usuario con password, y tuve que recrear la BD con la opción CONTAINED PARTIAL y ya me permitió crear el usuario con password pero al parecer no es recomendable.

    Entonces, he creado el LOGIN de la siguiente manera:

    IF EXISTS(SELECT * FROM MASTER.SYS.SYSLOGINS A WHERE A.NAME = 'USR_SGPDB_001')
    	DROP LOGIN [USR_SGPDB_001]
    	GO
    
    CREATE LOGIN USR_SGPDB_001 WITH PASSWORD='USR_SGPDB_001_PASS',
    	
    	DEFAULT_DATABASE=[SGPDB],
    	
    	DEFAULT_LANGUAGE=[ESPAÑOL],
    	
    	CHECK_EXPIRATION=ON,
    	
    	CHECK_POLICY=ON
    GO

    Sin embargo, no logra conectar, debo comentar la opción DEFAULT_DATADBASE para que sí permita conectar, pero la idea es que deseo establecer una BD por defecto a dicho inicio de sesión

    Edito: Ya logré hacer que el usuario conecte, estaba intentando conectar a través del LOGIN y no era posible, tuve que asociarlo a un usuario de BD (SGPDB) y ya pudo contectar.

    Muchas gracias.



    domingo, 18 de diciembre de 2016 14:31
  • Efectivamente Eduardo, en SQL Server necesitas un usuario para entrar a una BBDD concreta.

    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    lunes, 19 de diciembre de 2016 8:42
    Moderador