Хранимые процедуры Python - PullRequest
0 голосов
/ 09 октября 2018

Мне нужно создать связанный сервер в MS SQL Server для 2 серверов AWS RDS, начиная с Python 2.7.Для этого я использую библиотеку pymssql .Команды SQL выполняются с клиентом SQL без проблем, создаются связанные серверы, к ним можно обращаться, которые существуют и могут использоваться.

Проблема возникает, когда вы выполняете создание SQL в Python (из экземпляра).В AWS Linux, в том же AZ), вы получите следующее сообщение об ошибке:

Simple SQL queries from python (such as a Select) work without problems using pymssql.

То же самое происходит, когда хранимая процедура создается в базе данных и вызывается из python, если в инструкциях по созданиюсвязанные серверы включаются, тогда та же самая ошибка получена.Если вы создадите процедуру в sql в python, результат будет похожим.

Кто-нибудь знает, как это сделать?Большое спасибо за помощь.

Команды Linkedserver:

EXEC master.dbo.sp_addlinkedserver @server = N'linkserver1', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'aa.bb.cc.dd';

EXEC master.dbo.sp_dropserver @server = N'linkserver1';

EXEC sys.sp_linkedservers;

Код Python:

**import pymssql
def main():
    conn = pymssql.connect(server, user, clave, base)
    cursor = conn.cursor()
    cursor.execute("EXEC master.dbo.sp_addlinkedserver @server = N'RDSPrivate01', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'win-01.nnnnnn.us-west-1.rds.amazonaws.com'")
if __name__== "__main__":
  main()**

Сообщение об ошибке:

cursor.execute ("EXEC master.dbo.sp_addlinkedserver @server = N'RDSPrivate01 ', @ srvproduct = N' ', @ provider = N'SQLNCLI', @ datasrc = N'win-01.nnnnnnnnnnn.us-west-1.rds.amazonaws.com' ") Файл" src / pymssql.pyx ", строка 468, в pymssql.Cursor.execute pymssql.OperationalError: (15002, «Процедура« sys.sp_addlinkedserver »не может быть выполнена внутри транзакции. Сообщение об ошибке DB-Lib 20018, серьезность 16: \ nОбщая ошибка SQL Server: проверка сообщений от SQL Server \ n")

Используемые ссылки: https://aws.amazon.com/blogs/database/implement-linked-servers-with-amazon-rds-for-microsoft-sql-server/

http://www.pymssql.org/en/stable/pymssql_examples.html#important-note-about-cursors

...