SQL Server SEQUENCE 每隔几天就会在 Azure SQL 上重置自身。为什么?

问题描述 投票:0回答:1

我在 Azure SQL 的查询编辑器中使用的示例命令:

ALTER SEQUENCE dbo.MySeqName
    RESTART WITH 5000  
    INCREMENT BY 1

一开始运行得很好,几天后,我检查了序列,它已将自身重置回从 1 开始!

我从哪里开始排除故障?

编辑:更多信息,只是为了明确指出我不希望它循环也不希望它循环。

MINVALUE 为 1,MAXVALUE = 非常大的数字,即 Max BigInt。

编辑#2:如果有一些流氓或自动脚本正在执行并重新设置序列,是否有任何地方的历史日志,或者我可以暂时打开它,比如一周,以查看在Azure上执行的所有语句SQL?

编辑#3 投票结束问题。问题在于 Visual Studio 数据库项目的行为。

sql-server azure-sql-database
1个回答
0
投票

我尝试通过使用以下代码创建序列来在我的环境中复制您的问题:

CREATE SEQUENCE MySeqName1
start with 1
increment by 1
minvalue 0
maxvalue 5
cycle
cache 5000;

创建一个表并使用创建的序列将值插入其中

CREATE TABLE students
( 
    Id int,
   Name char(20)
);

Insert into students(Id,Name) values(NEXT VALUE FOR MySeqName1, 'AA'),
                                    (NEXT VALUE FOR MySeqName1, 'BB'),
                                    (NEXT VALUE FOR MySeqName1, 'CC'),
                                    (NEXT VALUE FOR MySeqName1, 'DD'),
                                    (NEXT VALUE FOR MySeqName1, 'EE'),
                                    (NEXT VALUE FOR MySeqName1, 'FF'),
                                    (NEXT VALUE FOR MySeqName1, 'GG')

select * from students

enter image description here

我使用下面的代码重置了序列

ALTER SEQUENCE dbo.MySeqName
    RESTART WITH 4  
    INCREMENT BY 1

插入到表序列中的值在最大值之后重复所以正如@Vladimir Baranov所说,使用下面的代码检查CYCLE选项:

SELECT is_cycling FROM sys.sequences WHERE name = 'MYSeqName' ;  

enter image description here

因此,为序列启用了

CYCLE
如果要删除
CYCLE
选项,请使用以下代码:

ALTER SEQUENCE MYSeqName  
     NO CYCLE

执行上述代码后,它被禁用

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.