【问题标题】:Error converting data type nvarchar to uniqueidentifier将数据类型 nvarchar 转换为 uniqueidentifier 时出错
【发布时间】:2016-01-05 11:10:07
【问题描述】:

我正在尝试从 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') 不存在

感谢您的帮助

【问题讨论】:

    标签: python sql stored-procedures


    【解决方案1】:

    我在 SSMS 中尝试了您的 SQL 代码。 这是不可能的,因为您使用 @ID NVARCHAR(32) 但字符串长度更长。请改用@ID NVARCHAR(36)。

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 2015-03-14
      • 2015-12-24
      • 2020-06-02
      • 2012-09-25
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多