Dar acceso al sistema de archivos a la cuenta virtual SQLSERVERAGENT


23

Estoy tratando de otorgar NT Service\SQLSERVERAGENTacceso al sistema de archivos de la cuenta de Windows, según la respuesta marcada en esta pregunta . Creo que es una cuenta de servicio virtual, y no aparece en el panel de control -> área de cuentas de usuario .

¿Cómo le doy acceso a esta cuenta de servicio al sistema de archivos? Específicamente, en Windows 7.

He leído varios enfoques y ninguno parece ser una opción para mí. Intenté un enfoque de PowerShell, pero los comandos AD no eran comandos válidos. Incluso descargué e instalé el parche de Windows requerido para esos comandos. También he leído que debería poder hacer esto a través del Administrador de configuración de SQL Server o Management Studio. Sin embargo, parece que no puedo entender dónde ajustar estos permisos.

El proceso del Agente SQL Server no se inicia, con el siguiente mensaje de error:

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

Según mi búsqueda en Google, tiene que ver con los permisos de esta cuenta.

No estoy seguro de si la base de datos está dañada, pero dice que la base de datos está en estado Normal . El inicio de sesión del Agente SQL Server es parte de los grupos sysadminy public.

Respuestas:


18

Para responder específicamente a su pregunta , así es cómo otorga derechos de acceso al disco a la cuenta integrada del Agente SQL Server. Pero sigue leyendo mientras respondo lo que creo que es el verdadero problema:

1.> Haga clic derecho en su unidad, seleccione propiedades, haga clic en el botón Agregar e ingrese la cuenta SQLSERVERAGENT (asegúrese de que su dominio no esté seleccionado en el cuadro de texto Desde esta ubicación, sino más bien el nombre de su computadora):

ingrese la descripción de la imagen aquí

2.> Haga clic en el botón Comprobar nombres para validar que la cuenta es válida:

ingrese la descripción de la imagen aquí

3.> Ahora, agregue el permiso de archivo que necesita a la cuenta SQLSERVERAGENT. Para fines de resolución de problemas, es posible que desee otorgar el control total y luego volver a escalarlo según sea necesario:

ingrese la descripción de la imagen aquí

Dicho esto , probablemente solo necesite usar el Administrador de configuración de SQL Server para volver a agregar el usuario del Agente SQL, de acuerdo con los comentarios que vi sobre msdb e inicios de sesión. Configuration Manager realiza más cambios en SQL Server que el uso del applet de Servicios de Windows, por lo que Configuration Manager siempre debe usarse para cambiar CUALQUIER servicio SQL.

Esto solucionará el problema si alguien puede haber cambiado la cuenta dentro de los Servicios de Windows causando que el servicio falle al inicio. Debe restablecerlo en Configuration Manager. Hacerlo permite que Configuration Manager agregue a SQL Server los permisos necesarios para administrar la base de datos MSDB para la cuenta de servicio local (NT SERVICE \ SQLSERVERAGENT), mientras que cambiar las cuentas dentro del applet de servicios de Windows no lo hace.

Advertencia: las versiones de SQL Server Express anteriores a 2000 no incluyen un Agente SQL. Ciertos aspectos pueden parecer estar allí, pero no se pueden usar en la versión Express del producto.

Para comenzar, abra el Administrador de configuración de SQL Server y haga doble clic en el servicio del Agente SQL Server en los Servicios de SQL Server. Seleccione el botón de radio Cuenta incorporada, elija Servicio local y haga clic en el botón Aplicar. Importante : si ya ve que esta cuenta está seleccionada, elija otra cuenta y haga clic en el botón Aplicar. Luego, vuelva a cambiarlo a Servicio local y haga clic en el botón Aplicar para permitir que Configuration Manager agregue los permisos MSDB correctos para que se inicie el servicio del Agente SQL. Ahora, reinicie el Agente SQL Server para reflejar esta nueva configuración.

ingrese la descripción de la imagen aquí


1
Mi cuenta del Agente SQL Server se configuró en NT Service\SQLAgent$MyInstanceNamee intentando configurar la seguridad en una carpeta y al presionar Verificar nombres, dijo Nombre no encontrado y no lo encontré. Después de mucha frustración, me di cuenta de que el valor predeterminado 'Desde esta ubicación' al presionar Agregar para agregar permisos no estaba configurado en mi máquina local, sino en mi dominio. Cambiarlo a mi máquina local (el nodo raíz del árbol) le permitió detectar mi NT Service\SQLAgent$MyInstanceNamecuenta para agregarla a los permisos de la carpeta.
NibblyPig

Obtuve el "MyInstanceName" del registro de eventos que registró los errores.
Jasen

2

Resolví este problema estableciendo la cuenta de inicio de sesión del Agente SQL Server en LocalSystem.


2
Si bien esta es una solución alternativa que puede poner las cosas en funcionamiento, generalmente se considera menos segura que usar la solución sugerida en esta respuesta
RDFozz

2

Estoy de acuerdo frustrante ... aparentemente es tan simple como escribir el nombre. http://zarez.net/?p=3187

Resumen: escriba NT SERVICE \ MSSQLSERVER y luego no haga clic en comprobar nombre, solo presione Aceptar y podrá configurar los permisos de carpeta para la cuenta del agente SQL.


1
¡Bienvenido al DBA SE! No voté en contra. Su respuesta cae en la categoría de "respuesta de solo enlace". Estas respuestas se vuelven incomprensibles cuando el lado remoto se cae. Los revisores de tu publicación deberían habértelo dicho, fue su error. Entonces: 1) su respuesta en realidad debería ser una respuesta (a la pregunta en la parte superior) 2) si está citando algo, haciendo referencia a una página web, copie y pegue lo más importante también en la publicación. El | Le di un voto positivo, pero sugiero que sea convincente para los otros revisores.
Peter dice reinstalar a Monica el

Excelente consejo @peterh, gracias por ser tan útil. V Jason, agregué el resumen de tu comentario a tu respuesta; eso puede ser suficiente, pero quizás quieras revisar para ver si deseas agregar algo más. Todas las mejoras son apreciadas!
Jack Douglas
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.