Ich habe einen SQL Server 2008-Server (Build 10.0.5500). Anfang dieser Woche habe ich dies für eine Tabelle ausgeführt , in der bereits Daten enthalten waren :
delete from dbo.table
go
dbcc checkident('dbo.table',reseed,0)
Wenn der Benutzer später einen neuen Datensatz erstellen wollte, wurde irgendwie eine ID von 0 in die ID-Spalte eingefügt, anstatt der 1, die SQL Server normalerweise eingibt, wenn Identität (1,1) für die ID konfiguriert ist.
Dies verursachte einige seltsame Probleme, aber das Löschen der Daten und das Ausführen des Reseeds führte erwartungsgemäß dazu, dass eine 1 eingefügt wurde. Ich kann das Problem nicht duplizieren.
Als Referenz ist hier das allgemeine Format für unsere Sicherungssps:
alter procedure dbo._TableSave
@pk_id int,
@field varchar(50)
as
if (@pk_id is null)
begin
set nocount on;
insert into dbo.Table
(
Field
)
values
(
@field
);
select scope_identity();
end
else
begin
update dbo.Table
set Field=@field
where PK_ID=@pk_id
select @pk_id
end
Weiß jemand, was dazu führen kann, dass SQL Server eine 0 in die ID einfügt, wenn es eine 1 sein sollte?
Wir fügen keine Daten in Identitätsspalten (mit aktivierter Identitätseinfügung ) irgendwo in der Anwendung ein.
CREATE TABLE dbo.[table] (id int identity(1,1));INSERT INTO dbo.[table] DEFAULT VALUES;DELETE FROM dbo.[table];dbcc checkident('dbo.table',reseed,0);INSERT INTO dbo.[table] OUTPUT inserted.* DEFAULT VALUES;DROP TABLE dbo.[table]