2013-08-05 46 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驱动程序似乎没有这种行为。 –