title: SQL Server 2016: create credential and add SQL Server Agent proxy for it
body: <p>I'm trying to script a <a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/create-credential-transact-sql" rel="nofollow noreferrer">creation of SQL Server identity</a> to be then used to execute SQL Server agent jobs via a proxy.</p>
  
  <p>It looks as though I can only use a Windows account and thence I would have to provide its password in plain text. Seriously? There must be a better way to do this. I need this script to work on my team-mates' machines as well as mine:</p>
  
  <pre><code>USE [msdb]
  
  CREATE LOGIN [proxy_login] WITH PASSWORD=N'passw0rd', 
      DEFAULT_DATABASE=[SSISConfig], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
  
  CREATE CREDENTIAL [my_cred] WITH IDENTITY='proxy_login', SECRET='passw0rd'
  
  EXEC msdb.dbo.sp_add_proxy 
      @proxy_name=N'My_Proxy',
      @credential_name=N'my_cred', 
      @enabled=1
  </code></pre>
  
  <p><strong>Error</strong>: </p>
  
  <blockquote>
    <p>Msg 14720, Level 16, State 1, Procedure sp_verify_credential_identifiers, Line 69 [Batch Start Line 0]<br>
    The operation failed because credential '@credential_name' identity is not a valid Windows account</p>
  </blockquote>
  
  <p>In ideal world I would like to use the <code>SYSTEM_USER</code> login for the credential without having to supply their password.</p>