Existe alguma maneira de procurar uma seqüência de caracteres em todas as tabelas de um banco de dados no SQL Server Management Studio 2008?
Eu quero procurar por string dizer john
. O resultado deve mostrar as tabelas e suas respectivas linhas que contêm john
.
sql
sql-server
search
Ramiz Raja
fonte
fonte
Respostas:
Se você é como eu e tem certas restrições em um ambiente de produção, convém usar uma variável de tabela em vez de tabela temporária e uma consulta ad-hoc em vez de um procedimento de criação.
Obviamente, dependendo da sua instância do servidor sql, ele deve suportar variáveis de tabela.
Também adicionei uma instrução USE para restringir o escopo da pesquisa
fonte
Um pouco tarde, mas espero que útil.
Por que não experimentar algumas das ferramentas de terceiros que podem ser integradas ao SSMS.
Eu trabalhei com o ApexSQL Search (100% gratuito) com bom sucesso na pesquisa de esquemas e dados e também há um pacote de ferramentas SSMS que possui esse recurso (não é gratuito para o SQL 2012, mas é bastante acessível).
O procedimento armazenado acima é realmente ótimo; é que isso é muito mais conveniente na minha opinião. Além disso, exigiria algumas pequenas modificações se você quiser procurar por colunas de data e hora ou colunas GUID e…
fonte
Para atualizar a resposta da TechDo para o SQL Server 2012. Você precisa alterar:
'FROM ' + @TableName + ' (NOLOCK) '
paraFROM ' + @TableName + 'WITH (NOLOCK) ' +
Caso contrário, você receberá o seguinte erro:
Deprecated feature 'Table hint without WITH' is not supported in this version of SQL Server.
Abaixo está o procedimento armazenado atualizado completo:
fonte
Um pouco tarde, mas você pode encontrar facilmente uma string com esta consulta
fonte
Eu escrevi um SP para isso, que retorna os resultados da pesquisa na forma de Nome da tabela, os nomes das colunas nas quais a cadeia de palavras-chave de pesquisa foi encontrada, bem como as pesquisas nas linhas correspondentes, como mostrado na captura de tela abaixo.
Essa pode não ser a solução mais eficiente, mas você sempre pode modificá-la e usá-la de acordo com sua necessidade.
fonte
Não há necessidade de loop aninhado (loop externo através de tabelas e loop interno através de todas as colunas da tabela). Pode-se recuperar todas (ou arbitrariamente selecionadas / filtradas) combinações de coluna de tabela
INFORMATION_SCHEMA.COLUMNS
e em um loop simplesmente passar por (pesquisar) todas elas:fonte
curTabCol
seleciona todas as combinações de tabela.coluna de interesse. Em seguida, procura em todas essas colunas a string fornecida na variável @search. Se existir uma string (exata) nesta consulta SQL (caso contrário, use LIKE '% ...%'), a combinação de nome de tabela e coluna será impressa.Isso foi muito útil. Eu queria importar essa função para um banco de dados SQL do Postgre. Pensei que iria compartilhá-lo com quem estiver interessado. Eles terão algumas horas. Nota: esta função cria uma lista de instruções SQL que podem ser copiadas e executadas no banco de dados Postgre. Talvez alguém mais esperto que eu possa fazer com que o Postgre crie e execute as instruções em uma única função.
fonte
A resposta já mencionada neste post já foi adotada várias vezes, porque precisava pesquisar apenas em uma tabela também:
(e também tornou a entrada para o nome da tabela um pouco mais simples)
fonte