Azure机器学习工作室:无法从Azure SQL数据库创建数据存储

Azure机器学习工作室:无法从Azure SQL数据库创建数据存储,azure,azure-sql-database,azure-machine-learning-studio,azure-machine-learning-service,azure-sdk-python,Azure,Azure Sql Database,Azure Machine Learning Studio,Azure Machine Learning Service,Azure Sdk Python,我正在尝试从Azure机器学习工作室内部连接到Azure SQL数据库。基于,建议的模式似乎是使用Datastore.register\u azure\u sql\u数据库方法创建数据存储,如下所示: import os from azureml.core import Workspace, Datastore ws = Workspace.from_config() # asks for interactive authentication the first time sql_datas

我正在尝试从Azure机器学习工作室内部连接到Azure SQL数据库。基于,建议的模式似乎是使用Datastore.register\u azure\u sql\u数据库方法创建数据存储,如下所示:

import os
from azureml.core import Workspace, Datastore

ws = Workspace.from_config() # asks for interactive authentication the first time

sql_datastore_name  = "datastore_test_01" # any name should be fine
server_name         = os.getenv("SQL_SERVERNAME"    , "{SQL_SERVERNAME}") # Name of the Azure SQL server
database_name       = os.getenv("SQL_DATABASENAME"  , "{SQL_DATABASENAME}") # Name of the Azure SQL database
username            = os.getenv("SQL_USER_NAME"     , "{SQL_USER_NAME}") # The username of the database user.
password            = os.getenv("SQL_USER_PASSWORD" , "{SQL_USER_PASSWORD}") # The password of the database user.

sql_datastore = Datastore.register_azure_sql_database(workspace      = ws,
                                                      datastore_name = sql_datastore_name,
                                                      server_name    = server_name,
                                                      database_name  = database_name,
                                                      username       = username,
                                                      password       = password)
我非常确定我已将所有参数设置正确,从SQL数据库资源-->设置-->连接字符串中的ADO.NET连接字符串中复制了这些参数:

Server=tcp:{SQL_SERVERNAME}.database.windows.net,1433;Initial Catalog={SQL_DATABASENAME};Persist Security Info=False;User ID={SQL_USER_NAME};Password={SQL_USER_PASSWORD};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
但是,我得到以下错误:

Registering datastore failed with a 400 error code and error message 'Azure SQL Database Error -2146232060: Please check the correctness of the datastore information.'
我错过什么了吗?例如,防火墙规则?我还尝试将Azure ML计算资源的公共IP地址添加到我的SQL数据库资源中允许的IP地址列表中,但仍然没有成功


更新:将
跳过验证=True
添加到
数据存储。注册azure\u sql\u数据库
解决了此问题。然后,我可以使用

from azureml.core import Dataset
from azureml.data.datapath import DataPath

query   = DataPath(sql_datastore, 'SELECT * FROM my_table')
tabular = Dataset.Tabular.from_sql_query(query, query_timeout = 10)
df = tabular.to_pandas_dataframe()

数据存储在vnet后面吗?您在哪里运行上面的注册码?在同一vnet后面的计算实例上? 下面的文档描述了连接到vnet后面的数据需要做什么:

我正在Azure机器学习内部创建的计算实例上运行代码,我认为该实例与SQL数据库不在同一个vnet上(它们属于不同的资源组)。顺便说一下,添加参数skip_validation=True(如链接中所建议的)可以解决这个问题!谢谢