为什么使用Windows身份验证登录使用AzureML dataprep的MS SQL失败?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么使用Windows身份验证登录使用AzureML dataprep的MS SQL失败?相关的知识,希望对你有一定的参考价值。

我尝试在Azure笔记本中使用azureml.dataprep连接到MS SQL数据库,如https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-load-data#load-sql-data中所述,使用MSSqlDataSource,使用表单的代码

import azureml.dataprep as dprep

secret = dprep.register_secret(value="[SECRET-PASSWORD]", id="[SECRET-ID]")

ds = dprep.MSSQLDataSource(server_name="[SERVER-NAME]",
                       database_name="[DATABASE-NAME], [PORT]",
                       user_name="[DATABASE-USERNAME]",
                       password=secret)

设置[DATABASE-USERNAME]等于MYWINDOWSDOMAIN\\MYWINDOWSUSERNAME和密码[SECRET-PASSWORD]与我的Windows密码一致(即尝试使用Windows身份验证)。

用...触发查询后

dataflow = dprep.read_sql(ds, "SELECT top 100 * FROM [dbo].[MYTABLE]")
dataflow.head(5)

我明白了

ExecutionError:登录失败。

我可以连接到没有Windows身份验证的其他数据库。我究竟做错了什么?

答案

考虑使用SQL server authentication作为解决方案/替代解决方案来连接到该数据库(相同的dataflow语法将起作用):

import azureml.dataprep as dprep
secret = dprep.register_secret(value="[SECRET-PASSWORD]", id="[SECRET-ID]")

ds = dprep.MSSQLDataSource(server_name="[SERVER-NAME],[PORT]",
               database_name="[DATABASE-NAME]",
               user_name="[DATABASE-USERNAME]",
               password=secret)
另一答案

Here is the MS Doc on MSSQLDataSourceMSSQLDataSource实例有一个属性,credentials_type默认为SERVER。在进行查询之前,请尝试将其明确设置为WINDOWS。此外,应将端口与服务器名称一起指定。

import azureml.dataprep as dprep

windows_domain = 'localhost'
windows_user = 'my_user'
windows_password = 'my_password'

secret = dprep.register_secret(value=windows_password, id="password")

ds = dprep.MSSQLDataSource(server_name="localhost",
                   database_name="myDb",
                   user_name=f'windows_domain\windows_user',
                   password=secret)

ds.credentials_type = dprep.DatabaseAuthType.WINDOWS

dataflow = dprep.read_sql(ds, "SELECT top 100 * FROM [dbo].[MYTABLE]")
dataflow.head(5)

以上是关于为什么使用Windows身份验证登录使用AzureML dataprep的MS SQL失败?的主要内容,如果未能解决你的问题,请参考以下文章

Windows Azure Active Directory 承载身份验证

使用 MFA 登录到 Azure CLI

在 Azure 应用服务身份验证与身份验证(经典)中重定向以使用 AAD 登录

用于 Azure 移动服务 (REST) 的 Live Connect 身份验证令牌

[Azure - Security] Azure的多重身份验证:使用AD(Azure Active Directory)开启用户MFA

Azure 点到站点 - AAD 身份验证