我已经建立了一个连接到MSSQL的进程,运行一个SP,通过pandas收回其摘要输出,打印到屏幕上,并通过电子邮件向我发送一份输出副本。
这一切都如期进行,但在我运行它的最后两个晚上,我都注意到,这个过程的某些部分已经填满了我连接的服务器上的tempdb。
作为python脚本的一部分,我已经包含了一个关闭连接的请求,但这种情况仍在发生,这让我认为这是pyodbc或从python内部运行SQL的固有特性。SP本身并不特别需要内存(在SSMS中运行SP不会产生此类问题),因此这不是特定于SQL的问题。
pyodbc是否有某种内存释放方法,或者是否有其他方法可以在不需要手动调整以避免填充tempdb的情况下运行它?
以下示例代码供参考:
import pyodbc
import pandas as pd
conn = pyodbc.connect('''
TRUSTED_CONNECTION=Yes;
DRIVER={SQL Server};
SERVER={myServer};
DATABASE=myDB;''')
r = pd.read_sql("exec [mySP]",conn)
print(r.to_string(index=False))
conn.close()