Ratkaistu: etsi teksti kaikista sql-palvelimelle tallennetuista menettelyistä

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

Ymmärtämällä SQL Server Stored -menettelyjen vaatimuksen joudumme usein etsimään tiettyä tekstiä niistä kaikista. Olipa kyseessä virheenkorjaus, riippuvuuksien tunnistaminen tai vain tietyn taulukon, sarakkeen tai minkä tahansa muun SQL-elementin käytön tarkistaminen. Tämä tehtävä voi kuitenkin olla melko työläs, jos se suoritetaan manuaalisesti. Tässä artikkelissa keskustelemme siitä, miten se tehdään tehokkaammin ohjelmoimalla ulospääsy.

Tehtävän yksinkertaistaminen SQL-skripteillä

Hyödyntämällä SQL-skriptien voimaa voimme muuttaa tämän työläs tehtävän nopeaksi ja yksinkertaiseksi prosessiksi. Sen sijaan, että tutkisimme erikseen jokaista tallennettua toimintosarjaa, voimme suoraan tiedustella tietokannan järjestelmänäkymiä etsiäksemme niistä tiettyä merkkijonoa. Tämä ratkaisu on uskomattoman monipuolinen, koska se on yhteensopiva useimpien SQL Server -versioiden kanssa.

Tämän menettelyn periaate on hyvin suoraviivainen – kyse on tietojen hakemisesta sql_modules-näkymästä yksinkertaisella select-käskyllä. Sys.sql_modules-järjestelmänäkymässä on rivi jokaiselle objektille, johon liittyy SQL-moduuli. SQL-moduulit ovat periaatteessa mitä tahansa rutiineja tai objekteja, jotka luodaan SQL Server Data Manipulation Language (DML) -käskystä (esim. tallennetut proseduurit, näkymät, funktiot).

Tämän toiminnon suorittava SQL-skripti olisi:

SELECT OBJECT_NAME(sm.object_id) AS object_name, 
       OBJECT_DEFINITION(sm.object_id) AS definition
FROM sys.sql_modules AS sm
WHERE sm.definition LIKE '%your_text%'

Sukellus SQL-koodiin

Annetussa SQL-koodissa sinun on korvattava "oma_teksti" etsimälläsi merkkijonolla. Kysely palauttaa luettelon objektien nimistä (tallennettu menettely, funktio, näkymä jne.) ja niitä vastaavat määritelmät, jotka sisältävät määritetyn hakutekstin. Näin voit helposti tunnistaa kaikki etsimäsi tekstin esiintymät.

Koodin ymmärtäminen:

  • OBJEKTIN_NAME(sm.objektin_id) on määritetyn tekstin sisältävän objektin nimi.
  • OBJEKTIN_MÄÄRITELMÄ(sm.objektin_id) on objektin määritelmä eli kohteen SQL-komentosarja.

Varmista, että jos etsimäsi teksti on osa SQL-avainsanaa, tämä kysely palauttaa myös objektit, joissa tätä avainsanaa käytetään. Siksi on suositeltavaa etsiä erottuvia avainsanoja.

Muita huomioon otettavia seikkoja

Vaikka tämä ratkaisu nopeuttaa prosessia merkittävästi, on joitakin näkökohtia, jotka on pidettävä mielessä. Määritelmäsarakkeen sys.sql_modules enimmäiskoko on 4000 merkkiä. Jos sinulla on tätä pidempi tallennettu toimintosarja, teksti katkaistaan. Tämä saattaa aiheuttaa joidenkin hakutekstin esiintymien katoamisen. Ratkaisua kuitenkin ohjataan asettamalla TEXTSIZE-vaihtoehdon enimmäisarvo 2147483647.

Tämä ei ehkä ole SQL-komentosarjan tavallisin käyttötapa, mutta se todistaa varmasti sen monipuolisuuden ja yksinkertaisuuden tietokanta-ammattilaisten päivittäisiin tehtäviin. Se on loistava esimerkki siitä, kuinka käsillä olevien työkalujen ymmärtäminen ja tehokas käyttö voivat parantaa merkittävästi SEO ja tuottavuutta.

Related viestiä: