¿Cómo configuro SQL Server 2012 para que pueda restaurar y ver archivos en mi cuenta de usuario?

10

Tengo una instancia de SQL Server 2012 ejecutándose como un servicio en mi computadora y, de acuerdo con la página de servicio, inicia sesión como cuenta "NT Service \ MSSQLSERVER". Sin embargo, no puedo ver ese nombre de cuenta en ningún otro lugar, incluido el área "Usuarios y grupos locales" en la pantalla de administración de la computadora, porque, como dice un enlace a continuación, esa no es una cuenta de usuario, es un nombre de servicio, en ese cuadro que Microsoft tan útilmente etiquetado como "cuenta". En este punto puedo ver a muchas personas confundidas.

La tarea que estoy tratando de lograr es restaurar archivos usando el cuadro de diálogo SSMS "Ubicar archivo de respaldo", que usa un cuadro de diálogo completamente diferente a cualquiera de los cuadros de diálogo estándar de abrir archivos de Windows, probablemente porque está haciendo un trabajo "remoto" y opera desde el contexto de seguridad del servidor SQL, otra fuente rica de confusión del usuario final, que espero que esta pregunta pueda ayudar a aclarar.

Hasta ahora, si quiero restaurar una copia de seguridad del archivo .mdf / .bak que tengo en una de mis carpetas, tengo que configurar esa carpeta para que todos puedan leerla o de lo contrario no puedo entrar con el servidor SQL "Localizar copia de seguridad Ventana "Archivo". Encuentro esta idea de que está utilizando una GUI hablando con un servicio que tiene diferentes cuentas de usuario y derechos que usted, que a nadie en Microsoft le importó aclarar, muy confuso incluso cuando tengo años de experiencia con la administración de sistemas Windows .

Espero haber perdido algunas páginas de documentación para SQL Server que le dirían, después de instalar una nueva instancia del servidor SQL, cómo puede configurar la seguridad.

Las publicaciones en foros como esta tienen incluso empleados de Microsoft que dicen "esto es complicado" y que "cambió de nuevo" en Denali. ¿Cómo funciona esto ahora en SQL Server 2012 y cómo puedo agregar permiso para leer los archivos que pertenecen a los usuarios a la seguridad del motor de la base de datos SQL SID?

Warren P
fuente
La razón por la que SQL no usa el diálogo estándar es porque no puede elegir un archivo del que SQL no puede leer. En cuanto a cómo configurar la seguridad, ¿está abierto a cambiar la cuenta con la que se ejecuta SQL o desea dejarlo como está ahora? Si cambiar la cuenta de servicio está bien, entonces es fácil de solucionar. Utilizamos cuentas con nombre, así que no puedo hacer pruebas con la cuenta genérica MSSQLSERVER para ayudar con eso.
cfradenburg
Si todos cambian sus Servidores SQL para que se ejecuten con una ID de usuario normal al realizar el desarrollo, esa podría ser la "mejor práctica". Me pregunto si es una buena idea o no. Si la idea estándar es agregar manualmente "NT Service \ MSSQLSERVER" a las carpetas que necesito agregar, supongo que sería la solución mínima más lógica, ¿verdad? Lo que deseo es que la interfaz de usuario SSMS del servidor SQL fue un poco más fácil de conectar a esta identificación oculta de la cuenta "NT Server \ xxx".
Warren P

Respuestas:

5

Como referencia, "Denali" es SQL Server 2012. Con respecto a la "confusión del usuario final", no me preocupa mucho si un usuario final está confundido o no con respecto al SSMS. Microsoft no desarrolló esta herramienta para el usuario final normal, sino para el administrador de la base de datos y / o un usuario que tuvo que administrar una base de datos. Por lo tanto, habrá una curva de aprendizaje con las herramientas proporcionadas y cómo funcionan. El cuadro de diálogo de archivo ha sido así en SSMS desde que SSMS salió con SQL Server 2005. Es por eso que en general verá la mayoría de las declaraciones T-SQL para hacer copias de seguridad, restaurar o adjuntar una base de datos que lo ha estado utilizando desde entonces .

Para configurar los permisos del sistema de archivos con SQL Server, puede seguir las instrucciones de MSDN aquí .

La forma en que se manejan las cuentas de servicio no vino o debido a SQL Server, se debió al cambio en el nivel del sistema operativo. Window Server 2008 R2 pone un poco más de una capa de seguridad alrededor de las cuentas de servicio. La ventaja que tiene es que la cuenta de servicio puede acceder más fácilmente a los recursos en un dominio incluso si se instala con la configuración predeterminada. Este enlace proporciona una visión bastante detallada de cómo se manejan los permisos de la cuenta de servicio con SQL Server 2012. El extracto del enlace se encuentra a continuación en las Cuentas virtuales utilizadas de manera predeterminada en SQL Server 2012. También hay un enlace en el artículo que incluye más información. discusión sobre el concepto de cuenta de servicio con Windows, aquí. Es de Windows Server 2008 R2, pero creo que aún es cierto en Windows Server 2012, y probablemente en Windows Server 2012 R2.

Cuentas virtuales

Las cuentas virtuales en Windows Server 2008 R2 y Windows 7 son cuentas locales administradas que proporcionan las siguientes características para simplificar la administración del servicio. La cuenta virtual se administra automáticamente y la cuenta virtual puede acceder a la red en un entorno de dominio. Si el valor predeterminado se usa para las cuentas de servicio durante la configuración de SQL Server en Windows Server 2008 R2 o Windows 7, se usa una cuenta virtual que usa el nombre de la instancia como el nombre del servicio, en el formato NT SERVICE \. Los servicios que se ejecutan como cuentas virtuales acceden a los recursos de la red utilizando las credenciales de la cuenta de la computadora en el formato \ $. Al especificar una cuenta virtual para iniciar SQL Server, deje la contraseña en blanco. Si la cuenta virtual no puede registrar el Nombre principal del servicio (SPN), registre el SPN manualmente. Para obtener más información sobre cómo registrar un SPN manualmente, consulte Registrar un nombre principal de servicio para conexiones Kerberos. Nota Nota Las cuentas virtuales no se pueden usar para la instancia del clúster de conmutación por error de SQL Server, porque la cuenta virtual no tendría el mismo SID en cada nodo del clúster.

La siguiente tabla enumera ejemplos de nombres de cuentas virtuales.

Instancia predeterminada del servicio Motor de base de datos: NT SERVICE \ MSSQLSERVER Instancia nombrada de un servicio Motor de base de datos llamado PAYROLL: NT SERVICE \ MSSQL $ PAYROLL Servicio del Agente SQL Server en la instancia predeterminada de SQL Server: NT SERVICE \ SQLSERVERAGENT Servicio del Agente SQL Server en un instancia de SQL Server llamada PAYROLL: NT SERVICE \ SQLAGENT $ PAYROLL


fuente
3
Por usuario final me refiero a cualquiera de las docenas de categorías de personas, algunas bastante profesionales y técnicamente competentes en varias disciplinas, pero que NO pueden ser DBA. Personalmente, creo que incluso los DBA encontrarían que la interfaz de usuario de esta herramienta podría mejorarse. El robusto mercado de herramientas de terceros es otro indicador de que SSMS, aunque es gratuito, vale la pena el precio.
Warren P
1
En 2017 no ha mejorado. Entonces, la respuesta corta es "nunca va a mejorar, aprenda cómo funciona, aunque la interfaz de usuario esté mal diseñada".
Warren P
2

Para ver / acceder a los archivos en otra carpeta, otorgue NT SERVICE\MSSQLSERVERpermisos en la carpeta. Vea mi respuesta publicada en el archivo .bak no visible en ningún directorio en SSMS para capturas de pantalla y los pasos involucrados. (Ligeramente diferente de agregar permisos normales de usuario / grupo a una carpeta).

¡Espero que ayude!

AdamsTips
fuente
1

De hecho, si intenta hacer una restauración a través de SSMS, y ha iniciado sesión a través de Autenticación de Windows (!), Será SU cuenta de Windows (y no "todos") la que necesita los permisos para eso, NO el Servicio de SQL Server Cuenta. Espero que eso aclare la confusión. La cuenta de servicio tiene otras necesidades. Por ejemplo, si inició sesión a través de una cuenta autenticada de SQL, entonces ¿qué permisos debe solicitar el sistema operativo? En este caso, será la cuenta de servicio de SQL Server solo caso! Esto no ha cambiado desde SQL Server 7.0 y probablemente ni siquiera antes de eso :)

Andreas Wolter
fuente
1
No te olvides de las credenciales .
Remus Rusanu
No estoy seguro de que despeje la confusión ... Si ha iniciado sesión a través de WA, su cuenta de SQL Server necesita los permisos para restaurar (en lo que respecta a SQL Server), pero la cuenta de servicio de SQL Server necesita los permisos de lectura en el sistema de archivos para abrir el .bakarchivo (que generalmente no tendrá si está en su directorio de usuarios, a menos que se otorgue explícitamente).
Bruno