未在通过存储过程创建的数据库中创建存储过程-python sql-server

时间:2019-04-29 11:03:10

标签: python sql sql-server pyodbc

这是对上一个问题的追随者-Not able to create database using stored procedure pyodbc SQL SERVER

在上一个问题中,我收到了ERROR_MESSAGE()-

CREATE DATABASE statement not allowed within multi-statement transaction.

这是通过在pyodbc中设置autocommit=True来解决的

import pyodbc
conn = pyodbc.connect("Driver={SQL Server};Server=SQL01;Trusted_Connection=yes;",autocommit=True)
#conn.autocommit = True
cursor=conn.cursor()
cursor.execute("""\
    DECLARE @RC int
    DECLARE @ClientName varchar(255)
    SET @ClientName = 'Test2'
    EXECUTE @RC = [test].[dbo].[ClientDBCreation] @ClientName
""")
conn.commit()

在创建'Test2'数据库之后,[test].[dbo].[ClientDBCreation]存储过程将继续在新创建的Test2 DB中创建一些存储过程。从pyodbc中不会创建这些存储过程。

在SSMS中,执行[test].[dbo].[ClientDBCreation]可以很好地工作并给出所需的结果。

0 个答案:

没有答案