Ratkaistu: Palvelimen identiteetti nollataan

Viimeisin päivitys: 09/13/2023
Kirjoittaja: SQL SourceTrail

Tietokantojen hallinnassa voi kohdata skenaarioita, joissa vaaditaan automaattisen lisäyksen identiteettiarvojen nollaaminen; Microsoft SQL Server ei ole poikkeus. Tunnistearvot ovat järjestelmän luomia numeroita taulukon rivien yksilölliseen tunnistamiseen ja joita käytetään ensisijaisesti ensisijaisen avaimen tarkoituksiin. Joskus tietokannan elinkaaren aikana tietueita poistetaan ja joissakin tapauksissa kokonaisia ​​taulukoita puhdistetaan, jolloin identiteettiarvoihin jää aukkoja. Kun uusia tietoja tulee vanhan tilalle, voi olla toivottavaa nollata identiteettiarvot peräkkäisen järjestyksen ylläpitämiseksi. SQL Serverissä tämä suoritetaan DBCC CHECKIDENT -komennolla.

DBCC CHECKIDENT ('your_table', RESEED, 0);

DBCC CHECKIDENT Selitetty

DBCC CHECKIDENT on tietokantakonsolikomento (DBCC), jota käytetään nimenomaan identiteettiarvojen nollaukseen. Tämän komennon parametrit ovat melko yksinkertaisia.

Kun olet kirjoittanut DBCC CHECKIDENT, annat taulukon nimen – tämä on taulukko, jonka identiteettiarvot haluat nollata. Käytä seuraavaksi avainsanaa RESEED ilmoittaaksesi SQL Serverille, että haluat nollata arvot. Viimeinen parametri on numero, jolle haluat lähettää identiteettiarvon uudelleen. Jos haluat seuraavan lisättävän identiteetin arvon olevan 1, aseta uudelleenseed-arvoksi 0. Seuraava automaattisesti luotu identiteettiarvo on aina yhtä suurempi kuin uudelleensyöttöarvo.

Selkeän esittelyn vuoksi kannattaa harkita "Tilaukset"-nimisen taulukon luomista tietueiden kanssa, joiden identiteettiarvot ovat 1, 2 ja 3.

SELECT * FROM Orders;

1 | Order1 | 2019-11-01
2 | Order2 | 2019-11-03
3 | Order3 | 2019-11-05

Vaiheittainen DBCC CHECKIDENT -sovellus

Oletetaan, että poistamme kolmannen tietueen ja haluamme seuraavan tilauksen tilaustunnuksen 3. Käsittelemme Tilaukset-taulukon uudelleen:

DBCC CHECKIDENT ('Orders', RESEED, 2);

Tämä komento saa seuraavan lisätyn tietueen identiteettiarvon 3.

Aukkojen uudelleenkylvön ymmärtäminen

Tärkeä huomioitava tosiasia on, että DBCC RESEED ei vaikuta olemassa oleviin tietueisiin. Esimerkiksi tilanteessa, jossa tietueita poistetaan, uudelleenkylvö on käytännöllistä aukkojen täyttämiseksi. Se voi kuitenkin olla kiistanalainen, jos se suoritetaan, kun taulukossa on vielä tietueita. Syynä on se, että jos määritetty uudelleensyöttöarvo on pienempi kuin taulukon nykyinen enimmäisidentiteettiarvo, se johtaisi identiteettiarvojen päällekkäisyyteen uusia tietueita lisättäessä, mikä on haitallista.

Yhteenvetona voidaan todeta, että SQL Serverin RESEED-toiminto on tehokas työkalu, joka auttaa identiteettiarvon hallinnassa. Sitä on käytettävä varoen tietokannan eheyden ylläpitämiseksi ja myös sen etujen hyödyntämiseksi.

DBCC CHECKIDENT:iin liittyvät yleiset toiminnot

Tässä on joitain yleisiä DBCC CHECKIDENTiin liittyviä toimintoja:

  • SCOPE_IDENTITY(): Palauttaa viimeisen samassa laajuudessa olevaan identiteettisarakkeeseen lisätyn identiteettiarvon.
  • @@IDENTITY: Tämä on järjestelmäfunktio, joka palauttaa viimeksi lisätyn identiteettiarvon.
  • IDENT_CURRENT(): Tämä funktio palauttaa tietylle taulukolle viimeksi luodun identiteettiarvon missä tahansa istunnossa ja missä tahansa laajuudessa.

Näiden työkalujen tehokas käyttö voi merkittävästi helpottaa tietokannan hallintaa ja parantaa SQL Server -tietokantojesi suorituskykyä. On tärkeää tutustua näihin toimintoihin, koska ne ovat SQL Server -tietokannan hallinnan peruselementtejä.

Related viestiä: