如何检索 SQL 服务器 RAISERROR(或 PRINT)消息?
How to retrieve SQL Server RAISERROR (or PRINT) messages?
我正在尝试使用 PyODBC 从 SQL 服务器在 python 中的 Raiserror 获取警告消息。
故意将严重性设置为低,因为它充当打印功能,但不必等到查询完成后再打印。
我期望的输出是这样的:
*Test Message*
|col1|
|:-|
|1|
这是我的代码:
import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=ECH-DWPROD02;DATABASE=Test;Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute("SET NOCOUNT ON; RAISERROR('Test Message',0,1) WITH NOWAIT; select 1 as col1")
cursor.fetchall()
Cursor.messages 是 pyodbc(v4.0.31 – 2021 年 7 月)的一个相当新的补充。它允许我们通过 PRINT 和 RAISERROR 检索从 SQL 服务器存储过程 等 发出的消息。
请注意,此类消息构成来自服务器的“结果”,因此如果它们被返回,则必须调用 .nextset()
来检索其他结果,否则“上一个 SQL 不是查询。 “将发生错误:
crsr.execute("""\
SET NOCOUNT ON;
RAISERROR('Test Message',0,1) WITH NOWAIT;
select 1 as col1
""")
print(crsr.messages)
# [('[01000] (50000)', '[Microsoft][ODBC SQL Server Driver][SQL Server]Test Message')]
crsr.nextset() # required before .fetchall()
print(crsr.fetchall())
# [(1, )]
我正在尝试使用 PyODBC 从 SQL 服务器在 python 中的 Raiserror 获取警告消息。
故意将严重性设置为低,因为它充当打印功能,但不必等到查询完成后再打印。
我期望的输出是这样的:
*Test Message*
|col1|
|:-|
|1|
这是我的代码:
import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=ECH-DWPROD02;DATABASE=Test;Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute("SET NOCOUNT ON; RAISERROR('Test Message',0,1) WITH NOWAIT; select 1 as col1")
cursor.fetchall()
Cursor.messages 是 pyodbc(v4.0.31 – 2021 年 7 月)的一个相当新的补充。它允许我们通过 PRINT 和 RAISERROR 检索从 SQL 服务器存储过程 等 发出的消息。
请注意,此类消息构成来自服务器的“结果”,因此如果它们被返回,则必须调用 .nextset()
来检索其他结果,否则“上一个 SQL 不是查询。 “将发生错误:
crsr.execute("""\
SET NOCOUNT ON;
RAISERROR('Test Message',0,1) WITH NOWAIT;
select 1 as col1
""")
print(crsr.messages)
# [('[01000] (50000)', '[Microsoft][ODBC SQL Server Driver][SQL Server]Test Message')]
crsr.nextset() # required before .fetchall()
print(crsr.fetchall())
# [(1, )]