我正在尝试从python运行MSSQL过程。基本上我的python脚本只执行一个名为" my_proc"的存储过程。使用这部分代码
sql_query = """
use my_db
exec dbo.my_proc
"""
res = common.execute_sql(SERVER, USERNAME, PASSWORD, sql_query)
程序 my_proc 看起来像这样
USE [my_db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[my_proc]
AS
BEGIN
DECLARE @ID NVARCHAR(32) = N'f17584bd-1b19-4847-a9c7-b1560054de69';
SELECT @ID, CONVERT(uniqueidentifier, @ID);
EXEC msdb.dbo.sp_start_job @job_id = ID
END
但是,在运行脚本时我收到错误:
将数据类型nvarchar转换为uniqueidentifier
时出错因此,看起来像 BEGIN 下面的部分,从nvarchar到uniquetradeidentifer的转换发生,失败。
我也试过
DECLARE @ID uniqueidentifier
SET @ID = CAST( 'f17584bd-1b19-4847-a9c7-b1560054de69' as uniqueidentifier )
但有同样的错误。
这里有什么问题?
最初我有
EXEC msdb.dbo.sp_start_job @job_id = 'f17584bd-1b19-4847-a9c7-b1560054de69'
在sql级别执行过程时有效,但是当使用我的python脚本运行该过程时,我收到错误:
指定的@job_id(' F17584BD-1B19-4847-A9C7-B1560054DE69')不存在
感谢您的帮助
答案 0 :(得分:1)
我在SSMS中尝试过您的SQL代码。 这是不可能的,因为您使用@ID NVARCHAR(32)但字符串长度更长。请改用@ID NVARCHAR(36)。