Estou tentando conectar ao nosso Azure SQL DB a partir do Databricks configurado com JDBC da seguinte maneira:
DBUser = 'test2'
DBPword = 'xxxxxx'
DBServer = 'hst37dg5zxxxxxxy-exnwgcizvwnurfcoqllpyaj3q4'
DBDatabase = 'newconfigdb-xxxxxxxxxxx8-a7ea-13f21e4ab25b'
jdbcUrl = f"jdbc:sqlserver://{DBServer}.database.fabric.microsoft.com:1433;database={DBDatabase};user={DBUser};password={DBPword};encrypt=true;trustServerCertificate=false;authentication=ActiveDirectoryPassword"
df.write.mode("overwrite") \
.format("jdbc") \
.option("url", jdbcUrl) \
.option("dbtable", table)\
.save()
Estou recebendo o seguinte erro:
com.microsoft.sqlserver.jdbc.SQLServerException: Falha ao autenticar o usuário test2 no Active Directory (Autenticação=ActiveDirectoryPassword). AADSTS50034: A conta de usuário "EUII Hidden" não existe no diretório 8cbfa73c-xxxxxxx8faef12fc6. Para entrar neste aplicativo, a conta deve ser adicionada ao diretório.
Alguém pode me dizer o que significa "EUII Hidden" ? E como resolver esse problema?
A título de atualização, quando entro no DBUser = ' [email protected] ' recebo o erro 'Falha ao autenticar o usuário [email protected] no Active Directory (Authentication=ActiveDirectoryPassword). AADSTS50055: A senha expirou'
No entanto, quando criei a conta no Azure, não me foi dada a opção de o usuário fornecer uma nova senha ao fazer logon. Então, não sei por que estou recebendo o erro de expiração de senha.
Acho que quase resolvi o problema.
Alterei a senha, mas agora quando tento executar o código recebo o erro:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '<'.
No Entra ID, crie um novo Registro de Aplicativo e gere um segredo do cliente para ele. Armazene o segredo do cliente em um escopo de segredo do Databricks . Conceda à entidade de serviço acesso ao banco de dados e altere sua autenticação de ActiveDirectoryPassword (que é para entidades de usuário e normalmente é bloqueada pelas suas políticas de acesso do Entra ID) para ActiveDirectoryServicePrincipal e use o segredo do cliente como senha.
Veja, por exemplo: https://techcommunity.microsoft.com/blog/azuredbsupport/qtip-connect-to-azure-sql-db-using-entra-spn-service-principal/4046781