当前位置: 首页 > 知识库问答 >
问题:

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

陆光济
2023-03-14

我正在尝试从 Azure 机器学习工作室内部连接到 Azure SQL 数据库。根据 https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.datastore.datastore?view=azure-ml-py,建议的模式似乎是使用Datastore.register_azure_sql_database方法创建数据存储,如下所示:

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 地址列表中,但仍然没有成功。

更新:将skip_validation=True添加到Datastore.register_azure_sql_database解决了这个问题

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()

共有1个答案

松俊美
2023-03-14

数据存储在vnet后面吗?您在哪里运行上面的注册码?在同一个vnet后面的计算实例上?以下是描述连接到vnet背后的数据所需执行的操作的文档:https://docs.microsoft.com/en-us/azure/machine-learning/how-to-enable-virtual-network#use-数据存储和数据集

 类似资料:
  • 我在新的Azure机器学习工作室工作,但我没有看到像Azure机器学习经典版那样转换为ARFF模块。是否有人知道此功能是否仍然存在以及如何访问它?

  • 我是Azure机器学习的新手。 我试图从Azure机器学习工作室经典中的数据集中打开一个笔记本。 但我得到了这个错误: 打开笔记本失败。笔记本id:ebb913d436ef45d4b1872b6e5d7167dc。 正如你在图片上看到的,我甚至不可能访问左侧菜单中的所有笔记本。

  • 我已经修复了firebase实时数据库上的读取和正确规则,但我仍然无法对其进行读取和写入。 我也试过这个: Firebase存储规则: Firebase存储规则工作正常,因为图像已上载并调用onSuccessListener。 我用来在数据库上设置值的代码如下所示,我已经将引用定义为:

  • 提前感谢普拉迪普

  • 但是首先,我们要去为数据库创建model类。你还记得我们之前所见的map委托的方式?我们要把这些属性直接映射到数据库中,反过来也一样。 我们先来看下CityForecast类: class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayFor

  • 我最近(怀疑地)开始和Azure机器学习工作室混日子。当我无意中看到新笔记本(Python 3、2或R)中打开的机器学习工作流的菜单选项时,我认为这太好了,不可能是真的: 很可能是这样,因为这个选项似乎只适用于流程的第一步。该选项仍然存在于右键菜单的其他地方,但它是灰色的: 有人知道为什么会这样吗?我是否必须激活菜单中的某些内容,或者购买某种高级许可证?该功能是否仅适用于某些机器学习算法?或者它不