¿Cómo puedo saber qué cuenta de usuario se está utilizando para realizar una acción (en el contexto de SQL Server)?

¿Cómo puedo saber qué cuenta de usuario se está utilizando para realizar una acción (en el contexto de SQL Server)?

Por ejemplo, al instalar SQL Server 2008, tuve que elegir una cuenta para ejecutar el motor de base de datos.

Cuando fui a adjuntar un archivo de base de datos de 2005 con SQL Server Management Studio, hubo un error de permiso que impedía la actualización de la base de datos. Revisé los archivos de la base de datos y la cuenta "SQLServerMSSQLUser$ComputerName$MSSQLSERVER" tiene permisos completos sobre el archivo.

Entonces supuse que SQL Server Management Studio se estaba ejecutando con mi nombre de usuario, que no tenía permisos de escritura para actualizar el archivo de la base de datos. Entonces, agregué permisos completos para mi nombre de usuario y luego funcionó.

Este incidente es lo que me llevó a hacer esta pregunta. ¿Cómo puedo saber con seguridad en qué cuenta se está ejecutando una acción? Pensé que el motor de base de datos se encargaría de adjuntar una base de datos, ¡pero aparentemente no!

Además, una vez que se adjuntó la base de datos, ¡parece haber eliminado mi nombre de usuario de la lista de seguridad! Así que imagino que si separo la base de datos, tendré que restablecer mis permisos sobre los archivos una vez más antes de poder volver a adjuntar la base de datos.

Respuesta1

Parece que SSMS está provocando esta confusión. Supongo que tener que seleccionar los archivos en un cuadro de diálogo significa que la cuenta con la que se ejecuta SSMS también necesita permisos para el archivo.

Siempre que la cuenta de servicio tenga permiso para el archivo, debería poder adjuntar la base de datos utilizando t-sql.

Intenta usar elsp_adjuntar _dbDeberá iniciar sesión como sa o utilizarusuario configurador o utilizar elCREAR BASE DE DATOS... PARA ADJUNTAR

Si tú realmentedebeuse SSMS y la idea de T-SQL le da ganas de vomitar, luego cree una cuenta de usuario para que se ejecute el servicio del servidor SQL y luego use esta cuenta para iniciar SSMS.

Respuesta2

Si conoce el nombre del archivo ejecutable, la pestaña Procesos del Administrador de tareas le mostrará el nombre de usuario que ejecuta ese archivo.

Respuesta3

Encontré la respuesta aquí:
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22785783.html

La documentación relevante de SQL Server está aquí:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx
"Cuando desconecta o adjunta una base de datos, el motor de base de datos intenta suplantar la cuenta de Windows de la conexión que realiza la operación para garantizar que la cuenta tiene permiso para acceder a la base de datos y a los archivos de registro. Para cuentas de seguridad mixtas que utilizan inicios de sesión de SQL Server, la suplantación podría fallar."

Además, dice claramente: "Los permisos de acceso a archivos se establecen durante cualquiera de las siguientes operaciones de la base de datos: crear, adjuntar, separar, modificar para agregar un nuevo archivo, realizar una copia de seguridad o restaurar".

Obviamente, necesito RTFM, jaja.

información relacionada