2016-01-05 6 views
0

Я пытаюсь запустить процедуру MSSQL из python. В основном мой питон скрипт просто выполняет хранимую процедуру с именем, как «my_proc», используя эту часть кодаОшибка преобразования типа данных nvarchar в uniqueidentifier

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, но при выполнении этой процедуры с помощью моего питон скрипт я получил ошибку:

Указанный @job_id ('F17584BD -1B19-4847-A9C7-B1560054DE69') не существует

Спасибо за любую помощь

ответ

1

Я TRI код SQL в SSMS. Это невозможно, потому что вы используете @ID NVARCHAR (32), но длина строки больше. Вместо этого используйте @ID NVARCHAR (36).

Смежные вопросы