Azure机器学习工作室:无法从Azure SQL数据库创建数据存储
我正在尝试从Azure机器学习工作室内部连接到Azure SQL数据库。基于,建议的模式似乎是使用Datastore.register\u azure\u sql\u数据库方法创建数据存储,如下所示: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
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(如链接中所建议的)可以解决这个问题!谢谢