esemény
márc. 31. 23 - ápr. 2. 23
A legnagyobb SQL, Fabric és Power BI tanulási esemény. Március 31. – Április 2. A FABINSIDER kóddal 400 dollárt takaríthat meg.
Regisztráljon még maEzt a böngészőt már nem támogatjuk.
Frissítsen a Microsoft Edge-re, hogy kihasználhassa a legújabb funkciókat, a biztonsági frissítéseket és a technikai támogatást.
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
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 ]
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]
.
Azt határozza meg, hogy az aktuális identitásértéket ne módosítsa.
Megadja, hogy az aktuális identitásértéket módosítani kell.
Az identitásoszlop aktuális értékeként használandó új érték.
Letiltja az összes tájékoztató üzenetet.
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. |
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 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.
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.
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.
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
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
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
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
esemény
márc. 31. 23 - ápr. 2. 23
A legnagyobb SQL, Fabric és Power BI tanulási esemény. Március 31. – Április 2. A FABINSIDER kóddal 400 dollárt takaríthat meg.
Regisztráljon még ma