Als u een SQL Server-databasebeheerder of -ontwikkelaar bent, moet u regelmatig zoeken naar specifieke database-objecten waarvan u de namen slechts gedeeltelijk kunt onthouden. De handmatige benadering voor het uitvoeren van deze zoekbewerkingen is tijdrovend, vooral wanneer de database een groot aantal objecten heeft.
Een ander scenario is er een waarin u naar specifieke gegevens in alle databasetabellen wilt zoeken. In dit geval moet u een SELECT-instructie meerdere keren uitvoeren op basis van het aantal databasetabellen of weergaven waarin u wilt zoeken, of een complexe cursor schrijven om in alle databasetabellen te herhalen en te doorzoeken, wat geavanceerde vaardigheden voor SQL Server-ontwikkeling vereist.
In dit artikel zullen we kijken naar verschillende manieren om te zoeken naar een specifiek database-object of gegevens in SQL Server, geleidelijk overgaand van ingebouwde methoden en duiken in een tool van derden die het een fluitje van een cent maakt om de gevraagde database te krijgen. object of gegevens.
Sys.objects opvragen
Sys.objects is een dynamische beheerweergave van het SQL Server-systeem die kan worden gebruikt om alle objecten weer te geven die zijn gedefinieerd onder een specifieke database.
Om bijvoorbeeld alle database-objecten weer te geven die "Emp" in hun naam hebben, kunnen we de DMV van het sys.objects-systeem opvragen op basis van de objectnaam, zoals in de T-SQL-query hieronder:
SELECT NAME AS ObjName ,schema_name(schema_id) AS SchemaName ,type AS ObjType ,type_desc AS ObjTypeDesc ,create_date ,modify_date FROM sys.objects WHERE NAME LIKE '%Emp%' ORDER BY ObjName ASC, ObjType ASC
En het resultaat dat wordt geretourneerd uit mijn testdatabase, met volledige informatie over de volledige objectnaam, het type, de aanmaak- en wijzigingsgegevens, is als volgt:
SQL Server Management Studio Object Explorer
Een andere methode die kan worden gebruikt om naar een specifiek database-object in uw database te zoeken, is de SQL Server Management Studio Object Explorer.
Wanneer u SQL Server Management Studio gebruikt om verbinding te maken met uw SQL Server-instantie en deze te beheren, kunt u de Objectverkenner openen door de optie Objectverkennerdetails te kiezen in het menu Beeld, of door simpelweg op de F7-toets . te drukken , zoals hieronder weergegeven:
Wanneer de Objectverkenner is geopend, kunt u op de volgende manier naar een specifiek database-object zoeken:
- blader naar de database waarin u wilt zoeken
- schrijf de naam (volledig of gedeeltelijk) van het database-object in de Zoeken tekstvak
- druk op Enter om het zoekproces te starten
De lijst met alle database-objecten die aan uw zoekcriteria voldoen, wordt weergegeven zoals hieronder weergegeven:
Om naar de locatie van een specifiek database-object te gaan, klikt u in het geopende zoekresultaat van Object Explorer met de rechtermuisknop op dat database-object en kiest u de optie Synchroniseren optie, zoals hieronder getoond:
De aanwijzer leidt u automatisch naar de locatie van dat object, zoals hieronder weergegeven:
SQL Server Management Studio-filtering
SQL Server Management Studio biedt ons een andere manier om een specifiek database-object te zoeken en te lokaliseren met behulp van filters.
Database-objecten kunnen als volgt worden gefilterd:
- blader naar de database waar de objecten zich bevinden
- breid het databaseknooppunt uit
- wijs naar de map waarin het object zich bevindt (zoals tabellen, weergaven, opgeslagen procedures of functies)
- klik met de rechtermuisknop op dat knooppunt en kies Filterinstellingen onder de Filter lijst met opties, zoals hieronder weergegeven:
Vanuit de geopende Filterinstelling venster, kiest u de zoekcriteria die u wilt gebruiken om het databaseobject te identificeren (bijv. naam, schema of de eigenaar van dat object, de operator die in het zoekfilter zal worden gebruikt). U kunt bijvoorbeeld zoeken naar een databaseobject waarvan de naam gelijk is aan, de opgegeven waarde wel of niet bevat. Nadat u de filtercriteria hebt opgegeven, klikt u op OK om het filter toe te passen:
Nadat het filter is toegepast, zult u zien dat alleen de database-objecten die voldoen aan de filterzoekcriteria worden weergegeven onder het knooppunt van het objecttype, zoals hieronder weergegeven:
Om het filter te verwijderen en alle databaseobjecten opnieuw te bekijken, klikt u met de rechtermuisknop op het relevante knooppunt van de databaseobjectenlijst, de Tabellen knooppunt in ons voorbeeld en kies de Filter verwijderen optie uit de lijst met filteropties en alle database-objecten worden opnieuw weergegeven, zoals hieronder weergegeven:
Gegevens zoeken in SQL Server Management Studio
Naast het schrijven van SELECT-query's om naar een specifieke waarde te zoeken, biedt SQL Server Management Studio ons een andere manier om kolomwaarden te zoeken en deze rechtstreeks op databaseobjectniveau te wijzigen op basis van de opgegeven criteria.
Als u naar een gegevenswaarde uit een specifieke tabel wilt zoeken, bladert u naar die tabel in SQL Server Management Studio, klikt u met de rechtermuisknop op die tabel en selecteert u Top 200 rijen bewerken optie, zoals hieronder getoond:
Klik in het geopende venster op het onderstaande tabelpictogram om het filtervenster te bekijken:
Geef in het geopende filtervenster de voorwaarde en de kolom(men) op waarin u geïnteresseerd bent. In het onderstaande voorbeeld zullen we alle werknemersrijen weergeven met een ID groter dan 10:
Nadat u het filter heeft ingesteld, klikt u met de rechtermuisknop ergens in een leeg gebied en kiest u SQL uitvoeren mogelijkheid om de voorwaarden toe te passen:
De rijen die aan de toegepaste voorwaarden voldoen, worden weergegeven in het resultatenraster en u kunt deze gegevens bijwerken, zoals hieronder weergegeven:
Zoeken naar een SQL Server-tool van derden
Tot nu toe hebben we verschillende methoden besproken voor het zoeken naar database-objecten en tabelgegevens. Maar deze methoden bieden ons specifieke soorten informatie die niet eenvoudig kunnen worden gefilterd, gesorteerd of beheerd. Daarom moeten we kijken naar tools van derden die op de markt beschikbaar zijn, en hopelijk vinden we er een die alle besproken zoekfunctionaliteit in hetzelfde venster biedt en ons in staat stelt de resultaten te beheren op basis van onze vereisten.
Een van de meest bruikbare en gebruiksvriendelijke tools van derden die gemakkelijk en snel kunnen worden gebruikt om naar elk type database-objecten of gegevens te zoeken, is dbForge Search for SQL Server van Devart.
dbForge Search for SQL Server is een gratis SQL Server Management Studio-invoegtoepassing die ons de mogelijkheid biedt om elk SQL Server-databaseobject of -gegevens te lokaliseren, zonder de SSMS Object Explorer te hoeven doorzoeken of de locatie van dat object op te roepen. Het stelt ons in staat om in alle database-objecten te zoeken of onze eigen zoekfilters in te stellen om snel database-objecten of gegevens te lokaliseren en er gemakkelijk doorheen te navigeren in de SSMS Object Explorer. Met dbForge Search voor SQL Server kunt u de zoekresultaten ook naar wens sorteren en filteren.
De gratis tool dbForge Search for SQL Server kan worden gedownload van de Devart-downloadpagina en eenvoudig op uw machine te installeren met behulp van een eenvoudige installatiewizard, zoals hieronder weergegeven:
De installatiewizard zal u eerst vragen om de installatiemap voor dbForge Search for SQL Server op te geven:
Vervolgens kunt u de SQL Server Management Studio-versie kiezen die op uw computer is geïnstalleerd:
En tot slot kunt u kiezen welke opstartoptimalisatie op de tool wordt toegepast om de prestaties te verbeteren, zoals hieronder weergegeven:
Wanneer de dbForge Search for SQL Server-installatie start, kunt u het installatieproces volgen via de voortgangsbalk van de installatie:
Na het voltooien van het installatieproces van de dbForge Search for SQL Server-invoegtoepassing, zal de installatiewizard ons laten weten dat de invoegtoepassing met succes is geïnstalleerd voor de geselecteerde SSMS-versie en klaar om te worden gebruikt:
Om de dbForge Search-tool te gaan gebruiken, opent u SQL Server Management Studio. U vindt het unieke pictogram van de zoekfunctie, zoals hieronder weergegeven:
Klik op de dbForge-zoekopdracht icoon en er wordt een nieuw venster geopend, waarin u zowel naar database-objecten als naar tabelgegevens kunt zoeken:
Zoeken naar databaseobjecten
Stel dat we moeten zoeken naar alle database-objecten met "emp" in hun naam in de AdevtureWorks2016-database.
Klik op de DDL knop aan de linkerkant om Zoeken naar database-objecten . te kiezen optie, schrijf de zoekterm in het zoekvak en selecteer vervolgens de SQL Server-instantie die die database bevat en de naam van de database(s) om de zoekopdracht op uit te voeren:
Selecteer daarna het type database-object(en) waarnaar u wilt zoeken in de Object Types vervolgkeuzelijst:
Geef tot slot het type zoekopdracht op dat u gaat uitvoeren. U kunt zoeken naar database-objecten met exact het opgegeven woord, de objecten die overeenkomen met het hele opgegeven woord, of u kunt jokertekens gebruiken (bijvoorbeeld '%') om objecten te retourneren met namen die de opgegeven woordgroep bevatten:
Nadat u op de zoekknop in de buurt van de verstrekte tekst heeft geklikt, ziet u de resultaten in twee secties. De eerste sectie bevat volledige details over alle database-objecten die voldoen aan de opgegeven zoekcriteria. In de tweede sectie vindt u de T-SQL-instructie die wordt gebruikt om het geselecteerde databaseobject te maken:
Naast de mogelijkheid om het geretourneerde resultaat te sorteren op basis van elke kolom, biedt de dbForge Search-tool ons de mogelijkheid om het zoekresultaat te groeperen op het type van het object. Om het zoekresultaat per database-object te groeperen, klikt u op het pictogram Groeperen, zoals u hieronder kunt zien:
Het zoekresultaat wordt gegroepeerd op database-objecttypes, wat het gemakkelijker maakt om de objecten waarin u geïnteresseerd bent te vinden en te beheren:
Nadat u het benodigde databaseobject uit de zoekresultaten hebt geselecteerd, kunt u dat object gemakkelijk vinden in de SSMS Objectverkenner door er met de rechtermuisknop op te klikken en Zoeken in Objectverkenner te selecteren. optie:
Gegevens zoeken
Met de dbForge Search-tool kunnen we ook zoeken naar een specifieke tekst- of getalwaarde in databasetabellen of views. Om de zoekmodus te wijzigen van het zoeken naar databaseobjecten naar het zoeken naar gegevens, klikt u op de Data zoekknop aan de linkerkant van het venster, selecteer het SQL Server-exemplaar waar uw database wordt gehost, en de database(s), tabellen en weergaven om de gegevens in te zoeken. Nadat u de zoekcriteria en filters voor gegevens hebt opgegeven, schrijft u de gegevenswaarde waarnaar u zoekt en klik op het zoekpictogram naast de verstrekte tekst, zoals hieronder weergegeven:
Nogmaals, het resultaat wordt in twee secties weergegeven. De eerste sectie toont volledige informatie over de locatie van de geretourneerde waarde en de tweede sectie toont de volledige rij die die waarde bevat:
Uit de vorige voorbeelden kunnen we duidelijk zien hoe gemakkelijk en snel de dbForge Search-tool is bij het zoeken en lokaliseren van database-objecten of gegevens, rekening houdend met het feit dat het zoekproces sneller zal zijn als we nauwkeurige en nauwkeurige zoekcriteria bieden. Probeer het zelf!