Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Ellenőrzi a megadott tábla aktuális identitásértékét az SQL Serveren, és szükség esetén módosítja az identitás értékét. A DBCC CHECKIDENT
használatával manuálisan is beállíthat egy új aktuális identitásértéket az identitásoszlophoz.
Transact-SQL szintaxis konvenciói
Szintaxis
Az SQL Server és az Azure SQL Database szintaxisa:
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Az Azure Synapse Analytics szintaxisa:
DBCC CHECKIDENT
(
table_name
[ RESEED , new_reseed_value ]
)
[ WITH NO_INFOMSGS ]
Érvek
table_name
Annak a táblának a neve, amelynek az aktuális identitásértékét ellenőrizni szeretné. A megadott táblának tartalmaznia kell egy identitásoszlopot. A táblaneveknek azonosítókszabályait kell követnie. Két vagy három résznevet kell elválasztani, például Person.AddressType
vagy [Person].[AddressType]
.
NORESEED
Azt határozza meg, hogy az aktuális identitásértéket ne módosítsa.
RESEED
Megadja, hogy az aktuális identitásértéket módosítani kell.
new_reseed_value
Az identitásoszlop aktuális értékeként használandó új érték.
A NO_INFOMSGS
Letiltja az összes tájékoztató üzenetet.
Megjegyzések
Az aktuális identitásérték konkrét javításai a paraméter specifikációitól függenek.
DBCC CHECKIDENT parancs | Identitáskorrekció vagy javítás |
---|---|
DBCC CHECKIDENT (<table_name>, NORESEED) |
Az aktuális identitásérték nem állítható vissza.
DBCC CHECKIDENT az aktuális identitásértéket és az identitásoszlop aktuális maximális értékét adja vissza. Ha a két érték nem egyezik meg, állítsa alaphelyzetbe az identitás értékét, hogy elkerülje az értékek sorozatában előforduló esetleges hibákat vagy hiányosságokat. |
DBCC CHECKIDENT (<table_name>) vagy DBCC CHECKIDENT (<table_name>, RESEED) |
Ha egy tábla jelenlegi identitásértéke kisebb, mint az identitásoszlopban tárolt maximális identitásérték, a rendszer az identitásoszlopban lévő maximális érték használatával alaphelyzetbe állítja. Lásd az alábbi Kivételek szakaszt. |
DBCC CHECKIDENT (<table_name>, RESEED, <new_reseed_value>) |
Az aktuális identitásérték a new_reseed_value van beállítva. Ha a tábla létrehozása óta nem szúrt be sorokat a táblába, vagy ha az összes sort eltávolították a TRUNCATE TABLE utasítással, a DBCC CHECKIDENT futtatása után beszúrt első sor new_reseed_value használ identitásként. Ha sorok találhatók a táblában, vagy ha az összes sort eltávolították a DELETE utasítással, a következő beszúrt sor new_reseed_value + az aktuális növekmény értéket használja. Ha egy tranzakció beszúr egy sort, és később visszagördít, a következő beszúrt sor new_reseed_value + az aktuális növekmény értéket használja, mintha a sort törölték volna. Ha a tábla nem üres, az identitás értékét az identitásoszlop maximális értékénél kisebb számra állíthatja, az alábbi feltételek egyikét eredményezheti:- Ha az identitásoszlopban ELSŐDLEGES KULCS vagy EGYEDI korlátozás található, akkor a rendszer a 2627-ben megjelenő hibaüzenetet fogja generálni, amikor később beszúrja a műveletet a táblába, mert a létrehozott identitásérték ütközik a meglévő értékekkel. – Ha nem létezik ELSŐDLEGES KULCS vagy EGYEDI korlátozás, a későbbi beszúrási műveletek ismétlődő identitásértékeket eredményeznek. |
Kivételek
Az alábbi táblázat felsorolja azokat a feltételeket, amikor DBCC CHECKIDENT
nem állítja alaphelyzetbe automatikusan az aktuális identitásértéket, és metódusokat biztosít az érték alaphelyzetbe állításához.
Feltétel | Visszaállítási módszerek |
---|---|
Az aktuális identitásérték nagyobb, mint a tábla maximális értéke. | Hajtsa végre a DBCC CHECKIDENT (<table_name>, NORESEED) az oszlop aktuális maximális értékének meghatározásához. Ezután adja meg ezt az értéket new_reseed_value egy DBCC CHECKIDENT (<table_name>, RESEED, <new_reseed_value>) parancsban.vagy Hajtsa végre a DBCC CHECKIDENT (<table_name>, RESEED,<new_reseed_value>) new_reseed_value alacsony értékre állításával, majd futtassa DBCC CHECKIDENT (<table_name>, RESEED) az érték kijavításához. |
Minden sor törlődik a táblából. | Hajtsa végre DBCC CHECKIDENT (<table_name>, RESEED, <new_reseed_value>) az új kezdőértékre beállított new_reseed_value . |
A kezdőérték módosítása
A kezdőérték a táblába betöltött első sor identitásoszlopába beszúrt érték. Minden további sor tartalmazza az aktuális identitásértéket, valamint azt a növekményes értéket, amelyben az aktuális identitásérték a tábla vagy nézet utolsó identitásértéke.
A DBCC CHECKIDENT
nem használhatók a következő feladatokhoz:
Módosítsa az identitásoszlophoz megadott eredeti kezdőértéket a tábla vagy nézet létrehozásakor.
Meglévő sorok újraeltetése egy táblában vagy nézetben.
Az eredeti magérték módosításához és a meglévő sorok újraküldéséhez dobja el az identitásoszlopot, és hozza létre újra az új magértéket megadva. Ha a tábla adatokat tartalmaz, a rendszer hozzáadja az identitásszámokat a meglévő sorokhoz a megadott mag- és növekményértékekkel. A sorok frissítési sorrendje nem garantált.
Eredményhalmazok
Függetlenül attól, hogy egy identitásoszlopot tartalmazó tábla beállításait adja-e meg, DBCC CHECKIDENT
az alábbi üzenetet adja vissza az összes művelethez, kivéve egyet. Ez a művelet egy új kezdőértéket ad meg.
Identitásadatok ellenőrzése: aktuális identitásérték<aktuális identitásérték>", aktuális oszlopérték "<aktuális oszlopérték>". A DBCC végrehajtása befejeződött. Ha a DBCC nyomtatta a hibaüzeneteket, forduljon a rendszergazdához.
Ha DBCC CHECKIDENT
új magértéket ad meg RESEED <new_reseed_value>
használatával, a következő üzenet lesz visszaadva.
Identitásadatok ellenőrzése: aktuális identitásérték<aktuális identitásérték>". A DBCC végrehajtása befejeződött. Ha a DBCC nyomtatta a hibaüzeneteket, forduljon a rendszergazdához.
Engedélyek
A hívónak rendelkeznie kell a táblát tartalmazó sémával, vagy tagja kell lennie a sysadmin rögzített kiszolgálói szerepkörnek, a db_owner rögzített adatbázis-szerepkörnek vagy a db_ddladmin rögzített adatbázis-szerepkörnek.
Az Azure Synapse Analyticshez db_owner engedély szükséges.
Példák
Egy. Szükség esetén állítsa alaphelyzetbe az aktuális identitásértéket
Az alábbi példa alaphelyzetbe állítja a AdventureWorks2022
adatbázis megadott táblájának aktuális identitásértékét, ha szükséges.
USE AdventureWorks2022;
GO
DBCC CHECKIDENT ('Person.AddressType');
GO
B. Az aktuális identitásérték jelentése
Az alábbi példa a AdventureWorks2022
adatbázis megadott táblájának aktuális identitásértékét jelenti, és nem javítja ki az identitásértéket, ha helytelen.
USE AdventureWorks2022;
GO
DBCC CHECKIDENT ('Person.AddressType', NORESEED);
GO
C. Az aktuális identitásérték kényszerítése új értékre
Az alábbi példa a AddressType
tábla AddressTypeID
oszlopában lévő aktuális identitásértéket 10-re kényszeríti. Mivel a táblázat meglévő sorokat tartalmaz, a következő beszúrt sor értéke 11 lesz. Az oszlophoz definiált új jelenlegi identitásérték plusz 1 (ez az oszlop növekményes értéke).
USE AdventureWorks2022;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
D. Az identitás értékének alaphelyzetbe állítása egy üres táblában
Az alábbi példa a (1, 1)
táblaidentitását feltételezi, és az ErrorLog
tábla ErrorLogID
oszlopában lévő aktuális identitásértéket 1 értékre kényszeríti, miután az összes rekordot törölte a táblából. Mivel a táblázatnak nincsenek meglévő sorai, a következő beszúrt sor értéke 1 lesz, vagyis az új jelenlegi identitásérték anélkül, hogy a TRUNCATE után az oszlophoz definiált növekményértéket, vagy a DELETE után adja hozzá a növekményértéket.
USE AdventureWorks2022;
GO
TRUNCATE TABLE dbo.ErrorLog
GO
DBCC CHECKIDENT ('dbo.ErrorLog', RESEED, 1);
GO
DELETE FROM dbo.ErrorLog
GO
DBCC CHECKIDENT ('dbo.ErrorLog', RESEED, 0);
GO