[系統] 關於ODBC的版本

作者: tsohg (不爭之爭)   2016-04-12 20:27:53
資料庫名稱:MSSQL
資料庫版本:MSSQL 2012
作業平台:WIN 2012 R2
問題描述:
抱歉 請問一下
近期遇到一個問題是
在 WINDOWS 2012 R2 ODBC32 (6.3.9600.17415)
用 ODBC去連 MSSQL 2012 連線有建立成功而且也可以成功 CREATE DB 但是要做接下來的動作卻Fail
程式示意如下 (僅做邏輯表示 語法有誤見諒)
functionXX(const unsigned char*SQLStmt)
{
...
SQLExecDirect(StmtHandle,(SQLCHAR*)SQLStmt,SQL_NTS);
...
}
然後呼叫的部份:
functionXX("CREATE DATABASE db_test"); //step1
functionXX("ALTER DATABASE db_test MODIFY FILE(NAME=db_test, SIZE=20)"); //step2
跑到step2 就報錯
SQLState='24000', Error message: [Microsoft][ODBC SQL Server Driver]Invalid cursor state
目前就只有在這個環境下會出錯
原先以為是SQL SERVER的設定造成 但是後來查了一些資料看起來比較像是ODBC這邊的問題
我有問到的是說建議在原本呼叫那行之前 加一行
SQLFreeStmt(StmtHandle, SQL_CLOSE); //prepend
SQLExecDirect(StmtHandle,(SQLCHAR*)SQLStmt,SQL_NTS); //original
但因為沒有太多機會在production 機器上做測試 所以想先確定一下方向
所以想請問
(1) 有沒有人有遇過類似經驗,或是看得出來大概是什麼問題嗎?
(2) 或是有人知道怎麼做可以把ODBC更新成 6.3.9600.17415 這個版本 我想local reproduce看看
謝謝各位 <(_ _)>
作者: rockchangnew (rock)   2016-04-13 09:06:00
去FB的SQL PASS社團問問看
作者: tsohg (不爭之爭)   2016-04-13 10:29:00
THANKS

Links booklink

Contact Us: admin [ a t ] ucptt.com