未找到数据源名称,并且在azure runbook中未指定默认驱动程序

fnatzsnv  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(414)

我试图在azure自动化runbook中运行此代码,但总是得到相同的错误

cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT='+port+';
DATABASE='+database+';UID='+username+';PWD='+password+';Authentication=ActiveDirectoryPassword')

错误:

pyodbc.InterfaceError: ('IM002', u'[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
ef1yzkbh

ef1yzkbh1#

如果你想用 pyodbc 要连接azure sql数据库,运行环境应具有用于sql server的microsoft odbc驱动程序。如果它没有驱动程序,您将得到错误。有关更多详细信息,请参阅文档。但是azure自动化沙盒没有驱动程序。
根据情况,我建议你在azure函数上托管脚本。
例如(我在azurehttptrigger函数上托管脚本)
我的代码

async def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    server = 'jimtestsql.database.windows.net'
    database = 'test'
    username = 'jim@hanxia.onmicrosoft.com'
    password = 'Wdsr199545#'
    driver= '{ODBC Driver 17 for SQL Server}'
    cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password+';Authentication=ActiveDirectoryPassword')
    cursor = cnxn.cursor()
    cursor.execute("SELECT Top(1) * FROM [dbo].[StarWars]")
    row = cursor.fetchone()

    return func.HttpResponse(str(row[0]) + " " + str(row[1]))

相关问题