2013-08-05 86 views
1

我剛剛在Windows Server 2008 R2上安裝了Microsoft SQL Server 2012,並且我正在使用Microsoft JDBC驅動程序4.0 for SQL Server(sqljdbc4.jar v4.0.2206.100)遠程訪問數據庫。Microsoft SQL Server 2012序列不工作 - 不斷增加序列2

我已經嘗試了許多變化和搜查甚廣,但由於某些原因,序列保持2遞增,而不是1

例子:

CREATE SEQUENCE MYSEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 999 CYCLE 
SELECT NEXT VALUE FOR MYSEQ - this actually returns 2, not 1 - but that's fine 
SELECT NEXT VALUE FOR MYSEQ - this returns 4, not 3 - that's a problem 
SELECT NEXT VALUE FOR MYSEQ - this returns 6, not 4 - that's a problem 
etc 

並不要緊什麼START有值是。

如果我更改爲使用增量2,它會一直增加4。

任何想法?感謝

+1

無法在SQL Server 2012中重現此功能 - 按設計工作,返回'1,2,3,4,5,6,7 ......「。在你的代碼/環境中必須有其他的事情導致這種行爲 - 但它不是** SQL Server 2012的錯誤,我會假設 –

+1

我發現了這個問題。我的JDBC字符串有:jdbc:sqlserver:// ; DatabaseName = ; selectMethod = cursor; sendStringParametersAsUnicode = false。當我刪除數據庫名稱後的所有內容時,它可以正常工作。抱歉! – Gary

+1

你應該把它作爲你自己問題的答案 - 也許這會幫助別人在同一個問題上磕磕絆絆。 –

回答

1

我使用的JDBC字符串是:

 
jdbc:sqlserver://[host]:[port];DatabaseName=[name];selectMethod=cursor;sendStrin‌gParametersAsUnicode=false 

當我改變了字符串:

jdbc:sqlserver://[host]:[port];DatabaseName=[name]

的序列返回被預期:1,2,3等

+0

哇,我不會認爲selectMethod有所作爲。看起來像一個驅動程序錯誤給我。使用遊標時,jTDS驅動程序似乎沒有這種行爲。 –