Il passaggio del processo SQL viene eseguito come diverso account sql


11

Sono curioso di come impostare un passaggio di lavoro SQL da eseguire come un altro account di accesso SQL. Sembra che debba configurare un nuovo account proxy che richiede una credenziale esistente. Quando creo una credenziale, la mia unica opzione è quella di utilizzare una credenziale di accesso a Windows.

Il lavoro che sto tentando di eseguire è di seguito. Esistono altre istruzioni aggiuntive, ma quando imposto il passaggio del processo in modo che venga eseguito come accesso SQL, non riesce.

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;

Quando viene eseguito attraverso un passaggio di processo SQL, non riesce.

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.

Non sono chiaro il motivo per cui sta tentando di accedere a un server remoto quando tutte queste tabelle esistono sul database locale.


Un passaggio del processo SQL ha già una connessione all'istanza SQL. Quindi è necessario modificare il contesto di sicurezza esistente, anziché effettuare una nuova connessione con una password. Se si desidera creare una nuova connessione, è possibile utilizzare un comando sqlcmd o uno script PowerShell, che può quindi utilizzare un accesso SQL e una password come parametri all'interno dello script. Ma dovresti considerare cosa devi fare e se sarà sufficiente un proc memorizzato con il suo contesto.
Rob Farley,

Risposte:


15

Se stai configurando un passaggio di lavoro T-SQL vai alla pagina avanzata e configura "Esegui come utente" per il login di tua scelta. inserisci qui la descrizione dell'immagine

Se si lavora con altri tipi di passaggi di lavoro come PowerShell, sarà necessario configurare un account proxy.


Ho provato questo, ma ora il lavoro non riesce a dire "L'accesso al server remoto è negato perché l'attuale contesto di sicurezza non è attendibile". Tuttavia, se eseguo lo script mentre ho effettuato l'accesso come utente, è in grado di eseguirlo correttamente. Non esiste un server collegato nella query, quindi non capisco perché si riferisca a un server remoto. qualche idea?
Geoff Dawdy,

Se potessi aggiungere alla tua domanda cosa sta cercando di fare il lavoro e l'errore esatto ci aiuterebbe a indicarti una soluzione.

Nel mio caso ha ignorato l'impostazione. Usando SQL 2012.
Miguel Sv,

1

Utilizzare EXECUTE ASall'inizio o creare una procedura memorizzata che viene eseguita in un determinato contesto.


Questo potrebbe essere negativo. Se si desidera chiamare una procedura memorizzata con un utente con restrizioni, è possibile INVIARE i privilegi di amministratore di sistema (o proprietario del lavoro). La soluzione alternativa sarebbe utilizzare un cookie.
Jens W.

Una procedura memorizzata che è stata creata utilizzando l'opzione ESEGUI AS gestirà l'escalation dei privilegi e non consentirà a qualcuno di cambiare a metà strada. Se non è disponibile alcun proc memorizzato, la rappresentazione di un diverso accesso farà il trucco, come con EXECUTE AS all'inizio dello script.
Rob Farley,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.