Descrição da necessidade geral de localizar dados e objetos em um banco de dados
A pesquisa de dados, procedimentos armazenados, tabelas e outros objetos no banco de dados é um problema bastante relevante, inclusive para desenvolvedores de C #, bem como para o desenvolvimento do .NET em geral.
Muitas vezes, pode surgir uma situação na qual você precisa encontrar:
- objeto de banco de dados (tabela, exibição, procedimento armazenado, função etc.)
- data (valor e em que tabela está localizada)
- snippet de código nas definições de objeto de banco de dados
Existem muitas soluções prontas, pagas e gratuitas.
Primeiro, veremos como você pode procurar dados e objetos em um banco de dados usando as ferramentas internas do DBMS e, em seguida, veremos como fazer isso usando o utilitário
dbForge Search gratuito.
Pesquise usando as ferramentas DBMS internas
Você pode determinar se a tabela Employee está no banco de dados usando o seguinte script:
Pesquisar tabela por nomeselect [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name]='Employee';
O resultado pode ser algo como isto:

Aqui são exibidos:
- identificadores do objeto e o esquema em que o objeto está localizado
- o nome deste circuito e o nome deste objeto
- tipo de objeto e descrição desse tipo de objeto
- data e hora da criação e última modificação do objeto
Para encontrar todas as ocorrências da linha "Projeto", você pode usar o seguinte script:
Pesquise todos os objetos por substring em um nome select [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name] like '%Project%';
O resultado pode ser algo como isto:

Como você pode ver no resultado, aqui a substring "Project" contém não apenas duas tabelas Project e ProjectSkill, mas também algumas chaves primárias e estrangeiras.
Para entender a quem exatamente essas chaves pertencem, adicionamos à saída o campo parent_object_id e seu nome e o esquema no qual ela está localizada da seguinte maneira:
Pesquise todos os objetos por substring no nome com a saída dos objetos pai select ao.[object_id], ao.[schema_id], schema_name(ao.[schema_id]) as [schema_name], ao.parent_object_id, p.[schema_id] as [parent_schema_id], schema_name(p.[schema_id]) as [parent_schema_name], p.[name] as [parent_name], ao.[name], ao.[type], ao.[type_desc], ao.[create_date], ao.[modify_date] from sys.all_objects as ao left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id] where ao.[name] like '%Project%';
O resultado será uma tabela com informações detalhadas sobre os objetos pai, ou seja, onde chaves primárias e estrangeiras são definidas:

Os seguintes objetos do sistema são usados nas consultas:
Então, descobrimos como encontrar objetos no banco de dados usando as ferramentas internas do DBMS.
Agora, mostramos como encontrar dados no banco de dados usando o exemplo de pesquisa de string.
Para encontrar o valor da sequência para todas as tabelas do banco de dados, você pode usar a seguinte
solução . Simplificamos esta solução e mostramos como você pode encontrar, por exemplo, o valor de “Ramiro” usando o seguinte script:
Procure valores de sequência por substring em todas as tabelas do banco de dados set nocount on declare @name varchar(128), @substr nvarchar(4000), @column varchar(128) set @substr = '%Ramiro%' declare @sql nvarchar(max); create table
O resultado da execução pode ser assim:

Os nomes das tabelas são exibidos aqui e em quais colunas o valor que contém a subcadeia “Ramiro” é armazenado. Bem como o número de entradas dessa substring encontrado para o par de tabela-coluna encontrado.
Para localizar objetos nas definições das quais existe um determinado pedaço de código, você pode usar as seguintes visualizações do sistema:
- sys.sql_modules
- sys.all_sql_modules
- sys.syscomments
Por exemplo, usando a última visualização, você pode usar o seguinte script para encontrar todos os objetos nas definições em que um determinado pedaço de código é encontrado:
Procure trechos de código nas definições de objeto de banco de dados select obj.[object_id], obj.[name], obj.[type_desc], sc.[text] from sys.syscomments as sc inner join sys.objects obj on sc.[id]=obj.[object_id] where sc.[text] like '%code snippet%';
O identificador, nome, descrição e definição completa do objeto serão exibidos aqui.
Pesquise com o dbForge Search Utility gratuito
No entanto, é mais conveniente pesquisar usando boas ferramentas prontas. Uma dessas ferramentas é o
dbForge Search .
Para chamar esse utilitário na janela
SSMS, clique no botão

.
A seguinte caixa de pesquisa será exibida:

Preste atenção ao painel superior (da esquerda para a direita):
- você pode alternar o modo de pesquisa (procurando DDL (objetos) ou dados)
- diretamente o que estamos procurando (qual substring)
- se diferencia maiúsculas de minúsculas, procure a correspondência exata de palavras, procure as ocorrências:

- agrupar o resultado por tipo de objeto - botão

- selecione os tipos necessários de objetos para pesquisar:

- Você também pode especificar vários bancos de dados para pesquisar e selecionar uma instância do MS SQL Server
Isso tudo está no modo de pesquisa de objetos, ou seja, quando o DDL está ativado:

No modo de pesquisa de dados, apenas a escolha dos tipos de objetos será alterada:

Nomeadamente, apenas tabelas estarão disponíveis para seleção, onde os próprios dados são armazenados:

Agora, como antes, encontraremos todas as ocorrências da subcadeia "Projeto" nos nomes dos objetos:

Como você pode ver, o modo de pesquisa de objetos DDL foi selecionado, é preenchido que estamos procurando a linha "Projeto", o resto era tudo por padrão.
Ao destacar um objeto encontrado, o código de definição desse objeto ou de todo o objeto pai é exibido abaixo.
Você também pode mover a navegação para o objeto encontrado clicando no botão

:

Você também pode agrupar objetos encontrados por seu tipo:

Observe que mesmo essas tabelas são exibidas nos quais existem campos cujos nomes contêm a subcadeia "Projeto". No entanto, lembre-se de que o modo de pesquisa pode ser alterado: para buscar conformidade total / parcial / sensível a maiúsculas ou não.
Agora encontramos o valor "Ramiro" em todas as tabelas:

Observe que todas as linhas que contêm a subcadeia “Ramiro” da tabela Employee selecionada são exibidas abaixo.
Você também pode mover a navegação para o objeto encontrado pressionando o botão como antes

:

Assim, podemos procurar os objetos e dados necessários no banco de dados.
Conclusão
As formas de pesquisar os dados em si e os objetos no banco de dados foram examinadas usando as ferramentas internas do próprio DBMS do MS SQL Server e usando o utilitário
dbForge Search gratuito.
O Devart também possui várias outras soluções prontas gratuitas, cuja lista completa pode ser encontrada
aqui .
Fontes