我可以在不使用管道的情况下从 Azure Synapse 查询 SQL Server 数据库吗?

Posted

技术标签:

【中文标题】我可以在不使用管道的情况下从 Azure Synapse 查询 SQL Server 数据库吗?【英文标题】:Can I Query a SQL Server Database from Azure Synapse Without Using a Pipeline? 【发布时间】:2021-08-04 01:15:30 【问题描述】:

是否可以使用 Pyspark+SQL 从 Azure 突触工作簿对 SQL 服务器数据库执行“SELECT”语句查询?

我能够将数据从 SQL Server 数据库引入 Azure Synapse 的唯一方法是创建集成管道。

我是使用 Azure Synapse 和 Apache Spark 的新手,因此非常感谢您提供的任何建议。

【问题讨论】:

【参考方案1】:

这在理论上是可行的,我已经使用 Azure SQL 数据库进行了测试。我不是 100% 确定它可以与 SQL Server 一起使用。这需要网络安全是正确的,并且两个数据库之间应该有一条视线。例如,您在 Azure 中的 SQL Server 是否在同一个 vnet 或对等 vnet 上?

Synapse 笔记本中的一个简单示例:

import pyodbc

sqlQuery = "select @@version v"

try:

  conn = pyodbc.connect( 'DRIVER=ODBC Driver 17 for SQL Server;'
                        'SERVER=someSynapseDB.sql.azuresynapse.net;'
                        'DATABASE=yourDatabaseName;UID=someReadOnlyUser;'
                        'PWD=youWish;', autocommit = True )

  cursor = conn.cursor()
  cursor.execute(sqlQuery) 

  row = cursor.fetchone()
  while row:
    print(row[0])
    row = cursor.fetchone()

except:
  raise

finally:
  # Tidy up
  cursor.close()
  conn.close()

我的结果:

受 Jovan Popovic 这篇文章的启发:

https://techcommunity.microsoft.com/t5/azure-synapse-analytics/query-serverless-sql-pool-from-an-apache-spark-scala-notebook/ba-p/2250968

只是出于兴趣,您在笔记本中这样做有什么特别的原因吗? Synapse 管道是一种非常好的方法,典型的模式是在数据湖中暂存数据,例如是否有一些特殊的功能需要使用笔记本?

【讨论】:

嘿 wBob,感谢您的解决方案。 SQL Server 将位于托管实例上。我确实喜欢通过管道摄取数据,但我想避免在将任何数据复制到突触时产生成本。我想如果我使用突触工作簿进行任何编排,从长远来看,这不一定重要。再次感谢你:)

以上是关于我可以在不使用管道的情况下从 Azure Synapse 查询 SQL Server 数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在不使用 await 的情况下从异步中捕获错误吗?

可以在不删除“使用”的情况下从 Intellisense 隐藏 Linq 和其他扩展吗?

问题:机架被占用。是不是可以在不使用流程图的情况下从机架系统中删除代理?

在不使用地图 android 的情况下从邮政编码中获取纬度和经度

如何在不使用表单的情况下从 jsp 调用 servlet

如何在不使用 foreach 循环的情况下从视图访问模型