Ratkaistu: etsi sarake kaikista tallennetuista toimenpiteistä sql server

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

Kun työskentelet suurten tietokantojen kanssa SQL Serverissä, saatat väistämättä kohdata tilanteen, jossa sinun on löydettävä tietty sarake kaikista tallennetuista toimenpiteistä. Tämä voi tulla esiin, jos muokkaat koodiasi uudelleen, etsit vikoja tai olet vain utelias sarakkeen käytöstä menettelyissäsi. Olipa syy mikä tahansa, sarakkeen paikantaminen SQL Serverissä voi tuntua pelottavalta tehtävältä, mutta älä huoli – oikealla SQL-skriptillä tämä voidaan tehdä nopeasti ja helposti.

Voimme saavuttaa tämän käyttämällä taulukkoa "INFORMATION_SCHEMA.ROUTINES" tai "sys.sql_modules", jossa kunkin menettelyn teksti on tallennettu SQL-palvelimeen.

[b] Tarkastellaan käytännössä kuinka löytää sarake kaikista SQL Serverin tallennetuista proseduureista. [/b]

Ratkaisun yleiskatsaus

Perusstrategiamme on tehdä kysely INFORMATION_SCHEMA.ROUTINES-taulukosta (tai 'sys.sql_modules') jokaisen tallennetun toimintosarjan määritelmän hakemiseksi. Voimme sitten käyttää LIKE-lausetta etsiäksemme sarakettamme näiden määritelmien puitteissa. Se on niin yksinkertaista!

Jos haluat saavuttaa tämän omassa SQL Server -ympäristössäsi, voit käyttää tätä yleistä kyselyä:

SELECT 
    ROUTINE_NAME, ROUTINE_DEFINITION
FROM 
    INFORMATION_SCHEMA.ROUTINES 
WHERE 
    ROUTINE_DEFINITION LIKE '%ColumnName%'
    AND ROUTINE_TYPE='PROCEDURE'

Vaiheittainen koodin selitys

1. Valitse tarvittavat tiedot

Aloitamme valitsemalla ROUTINE_NAME ja ROUTINE_DEFINITION kohdasta INFORMATION_SCHEMA.ROUTINES.

2. Määritelmän suodattaminen

Sitten käytämme WHERE-lausetta suodattamaan ROUTINE_DEFINITION. Olemme kiinnostuneita vain niistä riveistä, joissa ROUTINE_DEFINITION sisältää sarakkeen nimen.

3. Rajoitus tallennettuihin toimenpiteisiin

Lopuksi lisäämme WHERE-lauseeseen toisen ehdon rajoittaaksemme tulosjoukkomme vain niihin rutiineihin, jotka ovat tallennettuja toimenpiteitä.

Vaihtoehtoinen lähestymistapa käyttämällä sys.sql_modules

Yllä oleva kysely toimii täydellisesti sarakkeen nimen etsimiseen tallennetusta toimintosarjasta. On kuitenkin olemassa vaihtoehtoinen tapa saada samat tiedot. Voimme käyttää `sys.sql_modules` järjestelmänäkymää saadakseen SQL Server -moduulien tekstin. Se sisältää tallennettujen toimintojen, toimintojen, liipaisujen jne. määritelmiä.

SELECT Object_name(sm.object_id) as name, sm.definition
FROM sys.sql_modules AS sm
JOIN sys.objects AS o ON sm.object_id = o.object_id
WHERE sm.definition like '%ColumnName%'
AND type_desc = 'SQL_STORED_PROCEDURE'

SQL-jokerimerkkien käyttö

SQL-yleismerkit voivat olla erittäin hyödyllisiä tässä. Jos et ole varma, voivatko välilyönnit tai muut merkit edeltää tai seurata sarakkeen nimeä, voit käyttää `%` jokerimerkkiä, kuten `'% ColumnName %'` kattaaksesi mahdolliset merkit.

Näiden yksinkertaisten vaiheiden avulla voit nyt helposti löytää sarakkeen kaikista SQL-palvelimeen tallennetuista toimenpiteistäsi. Tällaisen ominaisuuden hyödyllisyys ei rajoitu sarakkeiden etsimiseen, vaan se ulottuu mihin tahansa tekstiin, jonka haluat löytää tallennetuista toimenpiteistäsi.

Related viestiä: