1

我有一个大型 python 脚本,它在 PyCharm 和 CMD 窗口中运行得很好,但是当我通过任务调度程序自动化它时,它一直挂断并在同一点失败。我已经缩小了代码中存在问题的范围,但我终其一生都无法弄清楚为什么会出现问题。我什至尝试为任务调度程序构建一个 .bat 文件以运行,但它仍然失败。

代码(这是它一直失败的部分):

import time
import turbodbc as to
import sys

logfile = "E:\\Python_Scripts\\Report\\log_file.txt"

f = open(logfile, "w")
f.write('Start - ' + str(time.ctime(time.time())) + '\n')
f.close()

# SCA SQL Server Connection
vns_odbc_driver = '{ODBC Driver 17 for SQL Server}'
vns_sql_driver = '{SQL Server Native Client 11.0}'
vns_sql_server = 'SERVER'
vns_sql_database = 'DATABASE'
vns_sql_schema = 'dbo'
vns_sql_username = 'USER'
vns_sql_password = 'PASS'
vns_sql_protocol = 'TCPIP'
vns_sql_port = '1675'

f = open(logfile, "a")
f.write(" 1. - " + str(time.ctime(time.time())) + '\n')
f.close()

try:
    vns_sql_conn = to.connect(
        driver=vns_odbc_driver,  # vns_sql_driver
        server=vns_sql_server,
        database=vns_sql_database,
        uid=vns_sql_username,
        pwd=vns_sql_password,
        protocol=vns_sql_protocol,
        port=vns_sql_port,
        autocommit=True
    )
except:
    e = sys.exc_info()[0]
    print(e)
    f = open(logfile, "a")
    f.write(" 2. " + str(e) + ' - ' + str(time.ctime(time.time())) + '\n')
    f.close()


f = open(logfile, "a")
f.write(" 3." + ' - ' + str(time.ctime(time.time())) + '\n')
f.close()

try:
    vns_sql_conn.close()
except:
    pass

f = open(logfile, "a")
f.write(" 4." + ' - ' + str(time.ctime(time.time())) + '\n')
f.close()

当我打印到日志文件时,从任务调度程序运行时会得到以下结果:

Start - Mon Jun 22 13:03:53 2020
 1. - Mon Jun 22 13:03:53 2020
 2. <class 'turbodbc.exceptions.DatabaseError'> - Mon Jun 22 13:04:09 2020
 3. - Mon Jun 22 13:04:09 2020
 4. - Mon Jun 22 13:04:09 2020

但是,当我从 CMD 窗口或 PyCharm 运行它时,我会得到这个日志文件:

Start - Mon Jun 22 13:03:53 2020
 1. - Mon Jun 22 13:03:53 2020
 3. - Mon Jun 22 13:04:09 2020
 4. - Mon Jun 22 13:04:09 2020

这意味着它运行良好并连接到数据源。我认为它必须与使用任务调度程序中的驱动程序的权限有关?我以管理员权限登录到我的服务器,并设置了具有最高权限的任务...

任务计划程序截图

4

1 回答 1

0

尝试这个:

在计划任务的属性选项卡中,您有一个“操作”选项卡。按下。

在那里,您将执行“启动程序”操作。按下它并单击“编辑”按钮。

在那里您将看到“程序/脚本:”行编辑。您必须复制脚本的路径并将其粘贴到另一个位于下方的“开始于(可选)”行编辑中。

它会是这样的: https ://drive.google.com/file/d/1unRQpa4lRAXQH_OkL4ced_5Dw6VPlxYQ/view?usp=sharing

希望它有效!

于 2020-06-23T18:38:04.373 回答