Почему мой вход в MS SQL с помощью AzureML dataprep с использованием проверки подлинности Windows завершается неудачно? - PullRequest
0 голосов
/ 09 февраля 2019

Я попытался подключиться к базе данных MS SQL, используя azureml.dataprep в записной книжке Azure, как указано в 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.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Рассмотрите возможность использования аутентификации сервера SQL в качестве обходного / альтернативного решения для подключения к этой базе данных (будет работать тот же синтаксис 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)
0 голосов
/ 13 февраля 2019

Вот документ MS на 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)
...