El paso de trabajo SQL se ejecuta como una cuenta sql diferente

11

Tengo curiosidad por saber cómo configurar un paso de trabajo SQL para que se ejecute como una cuenta de inicio de sesión SQL diferente. Parece que necesito configurar una nueva cuenta de proxy que requiere una credencial existente. Cuando creo una credencial, mi única opción es usar una credencial de inicio de sesión de Windows.

El trabajo que intento ejecutar está debajo. Hay otras declaraciones adicionales, pero cuando configuro el paso del trabajo para que se ejecute como inicio de sesión de SQL, falla.

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

Cuando esto se ejecuta a través de un paso de trabajo SQL, falla.

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

No tengo claro por qué está intentando acceder a un servidor remoto cuando todas estas tablas existen en la base de datos local.

Geoff Dawdy
fuente
Un paso de trabajo de SQL ya tiene una conexión con la instancia de SQL. Por lo tanto, debe cambiar el contexto de seguridad existente, en lugar de hacer una nueva conexión con una contraseña. Si desea crear una nueva conexión, puede usar un comando sqlcmd o un script de PowerShell, que luego puede usar un inicio de sesión y contraseña de SQL como parámetros dentro del script. Pero debe considerar lo que necesita hacer y si un proceso almacenado con su propio contexto será suficiente.
Rob Farley

Respuestas:

15

Si está configurando un paso de trabajo T-SQL, vaya a la Página avanzada y configure "Ejecutar como usuario" en el inicio de sesión que elija. ingrese la descripción de la imagen aquí

Si está trabajando con otros tipos de pasos de trabajo como PowerShell, necesitará configurar una cuenta de proxy.


fuente
He intentado esto, pero ahora el trabajo falla diciendo "Se ha denegado el acceso al servidor remoto porque no se confía en el contexto de seguridad actual". Sin embargo, si ejecuto el script mientras estoy conectado como usuario, es capaz de ejecutarlo bien. No hay un servidor vinculado en la consulta, así que no entiendo por qué se refiere a un servidor remoto. ¿Alguna idea?
Geoff Dawdy
Si pudiera agregar a su pregunta qué está tratando de hacer el trabajo y un error exacto nos ayudaría a señalarle una solución.
En mi caso, ignoró la configuración. Usando SQL 2012.
Miguel Sv
1

Úselo EXECUTE ASal principio o cree un procedimiento almacenado que se ejecute en un contexto particular.

Rob Farley
fuente
Esto puede ser malo. Si desea llamar a un procedimiento almacenado con un usuario restringido, podría REVERTIRSE a los privilegios de administrador del sistema (o propietario del trabajo). La solución sería usar una cookie.
Jens
Un procedimiento almacenado que se haya creado utilizando la opción EJECUTAR COMO manejará la escalada de privilegios y no permitirá que alguien cambie a mitad de camino. Si no hay ningún proceso almacenado disponible, suplantar un inicio de sesión diferente hará el truco, como con EJECUTAR COMO al comienzo del script.
Rob Farley