SQL Server 2019中sp_execute_external_脚本和Python的受信任连接问题

2024-06-09 20:34:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用sp_execute_external_脚本在SQLServer2019中运行Python脚本。我希望使用受信任的连接来完成此操作,而不是提供SQL用户ID和密码

EXECUTE sp_execute_external_script
         @language = N'Python'
        ,@script = N'
        
import pyodbc
conn = pyodbc.connect(''Driver={ODBC Driver 17 for SQL Server};''
                      ''Server=MyServerName;''
                      ''Database=MyDBName;''
                      ''Trusted_Connection=yes;'')

cursor = conn.cursor()
cursor.execute(''SELECT 1 AS [Col1]'')

for row in cursor:
    print(row)
        
        '

然而,我得到了错误

pyodbc.interface错误:('28000',“[28000][Microsoft][ODBC Driver 17 for SQL Server][SQL Server]用户'MyDomain\MyServerName$'(18456)(SQLDriverConnect)登录失败;[28000][Microsoft][ODBC Driver 17 for SQL Server][SQL Server]用户'MyDomain\MyServerName$'(18456)”登录失败

…其中MyDomain是我的组织域的名称,MyServerName$是SQL Server的名称,后跟美元符号

看起来sp_execute_external_脚本正试图在某种类型的内部服务帐户下运行(?猜测,根本不是DBA)。我需要更改/配置什么以使脚本在我的凭据下运行

或者,需要为此服务(?)帐户设置什么以允许其运行脚本?我确实尝试过搜索这个帐户名,看看是否可以修改权限,但SQL正在回击消息“找不到具有以下名称的对象(用户或内置安全主体)”,因此我显然遗漏了一些内容

感谢您的指导

谢谢

编辑10/23:我知道对于这个简单的示例,我可以使用@input_data_1参数传入SQL查询,但我正在计划在脚本中使用多个SQL查询的场景。据我所知,不支持传入多个@input_data_x参数。因此,我认为我还需要在脚本中建立到本地数据库的连接


Tags: 用户脚本名称forexecutesqlserverdriver