0

callproc 経由で "sp_executesql" を呼び出す際に助けが必要です (RPC として必要です)。これは私のコードです:

import pymssql
conn = pymssql.connect(host='11.22.33.44:1433', user='sa', password='XYZ', database='AdventureWorks')
cur = conn.cursor()
cur.callproc("sp_executesql", 'SELECT * FROM AdventureWorks.HumanResources.Employee WHERE BusinessEntityID = 109')

次のエラーが表示されます。

  File "executesql.py", line 4, in <module>
    cur.callproc("sp_executesql", 'SELECT * FROM AdventureWorks.HumanResources.Employee WHERE BusinessEntityID = 109')
  File "pymssql.pyx", line 357, in pymssql.Cursor.callproc (pymssql.c:4238)
    self._returnvalue = proc.execute()
  File "_mssql.pyx", line 1289, in _mssql.MSSQLStoredProcedure.execute (_mssql.c:12177)
    check_cancel_and_raise(rtc, self.conn)
  File "_mssql.pyx", line 1322, in _mssql.check_cancel_and_raise (_mssql.c:12473)
    return maybe_raise_MSSQLDatabaseException(conn)
  File "_mssql.pyx", line 1366, in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:13067)
    raise ex
_mssql.MSSQLDatabaseException: (214, "Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.DB-Lib error message 214, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n")

他のストアド プロシージャの実行はスムーズに進みます。文字列をユニコード (u'Select...') として実行すると、次のエラーが発生します。

Traceback (most recent call last):
  File "executesql.py", line 4, in <module>
    cur.callproc("sp_executesql", u'SELECT * FROM AdventureWorks.HumanResources.Employee WHERE BusinessEntityID = 109')
  File "pymssql.pyx", line 354, in pymssql.Cursor.callproc (pymssql.c:4177)
    raise NotSupportedError('Unable to determine database type')
pymssql.NotSupportedError: Unable to determine database type

これを克服する方法を知っていますか?

SQL Server は Microsoft SQL Server 2012 - 11.0.2100.60 (X64) 2012 年 2 月 10 日 19:39:15 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) o​​n Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor)

どうもありがとう

4

1 に答える 1

0

私は同じ問題に直面しています。第56号で報告されたようです。これまでのところ未解決。:(

更新:「なし」の問題の解決策を見つけました。ここで私のスレッドを参照してください。

于 2012-10-17T17:10:25.663 に答える