Quais são alguns recursos ocultos do SQL Server ?
Por exemplo, procedimentos armazenados de sistema não documentado, truques para fazer coisas que são muito úteis, mas não documentadas o suficiente?
Respostas
Obrigado a todos por todas as ótimas respostas!
Procedimentos armazenados
- sp_msforeachtable: executa um comando com '?' substituído por cada nome de tabela (v6.5 e superior)
- sp_msforeachdb: executa um comando com '?' substituído por cada nome de banco de dados (v7 e superior)
- sp_who2: assim como sp_who, mas com muito mais informações para solucionar problemas de blocos (v7 e superior)
- sp_helptext: se você deseja o código de um procedimento armazenado, visualize & UDF
- sp_tables: retorna uma lista de todas as tabelas e visualizações do banco de dados no escopo.
- sp_stored_procedures: retorna uma lista de todos os procedimentos armazenados
- xp_sscanf: lê dados da cadeia de caracteres nos locais dos argumentos especificados por cada argumento de formato.
- xp_fixeddrives:: Encontre a unidade fixa com o maior espaço livre
- sp_help: se você deseja conhecer a estrutura da tabela, índices e restrições de uma tabela. Também visualizações e UDFs. O atalho é Alt + F1
Trechos
- Retornando linhas em ordem aleatória
- Todos os objetos de usuário do banco de dados por data da última modificação
- Somente data de retorno
- Encontre registros cuja data esteja em algum lugar da semana atual.
- Encontre registros cuja data ocorreu na semana passada.
- Retorna a data para o início da semana atual.
- Retorna a data do início da semana passada.
- Veja o texto de um procedimento que foi implantado em um servidor
- Descartar todas as conexões com o banco de dados
- Soma de verificação da tabela
- Soma de verificação de linha
- Solte todos os procedimentos em um banco de dados
- Mapeie novamente os IDs de login corretamente após a restauração
- Chamar procedimentos armazenados de uma instrução INSERT
- Localizar procedimentos por palavra-chave
- Solte todos os procedimentos em um banco de dados
- Consulte o log de transações para um banco de dados programaticamente.
Funções
- HashBytes ()
- EncryptByKey
- Comando PIVOT
Diversos
- Extras da String de Conexão
- TableDiff.exe
- Disparadores para eventos de logon (novos no Service Pack 2)
- Aumentando o desempenho com colunas computadas persistentes (pcc).
- Configuração DEFAULT_SCHEMA em sys.database_principles
- Parametrização Forçada
- Formato de armazenamento vardecimal
- Descobrir as consultas mais populares em segundos
- Bancos de dados compartilhados escaláveis
- Recurso Tabela / Filtro de Procedimento Armazenado no SQL Management Studio
- Sinalizadores de rastreamento
- Número após a
GO
repetição do lote - Segurança usando esquemas
- Criptografia usando funções de criptografia integradas, visualizações e tabelas básicas com gatilhos
sql-server
tsql
Sklivvz
fonte
fonte
Respostas:
No Management Studio, você pode colocar um número após um marcador de fim de lote do GO para fazer com que o lote seja repetido esse número de vezes:
Irá imprimir 'X' 10 vezes. Isso pode salvá-lo de copiar / colar tediosamente ao fazer coisas repetitivas.
fonte
Muitos desenvolvedores do SQL Server ainda parecem não conhecer a cláusula OUTPUT (SQL Server 2005 e mais recente) na instrução DELETE, INSERT e UPDATE.
Pode ser extremamente útil saber quais linhas foram INSERTed, UPDATEd ou DELETEd, e a cláusula OUTPUT permite fazer isso com muita facilidade - permite acesso às tabelas "virtuais" chamadas
inserted
edeleted
(como nos gatilhos):Se você estiver inserindo valores em uma tabela que possui um campo de chave primária INT IDENTITY, com a cláusula OUTPUT, é possível obter o novo ID inserido imediatamente:
E se você estiver atualizando, pode ser extremamente útil saber o que mudou - nesse caso,
inserted
representa os novos valores (após o UPDATE), enquantodeleted
se refere aos valores antigos antes do UPDATE:Se muitas informações forem retornadas, a saída de OUTPUT também poderá ser redirecionada para uma tabela temporária ou uma variável de tabela (
OUTPUT INTO @myInfoTable
).Extremamente útil - e muito pouco conhecido!
Marc
fonte
sp_msforeachtable
: Executa um comando com '?' substituído por cada nome de tabela. por exemploVocê pode emitir até 3 comandos para cada tabela
Além disso,
sp_MSforeachdb
fonte
Extras da String de conexão:
MultipleActiveResultSets = true;
Isso faz com que o ADO.Net 2.0 e superior leia vários conjuntos de resultados somente para encaminhamento e somente leitura em uma única conexão com o banco de dados, o que pode melhorar o desempenho se você estiver lendo muito. Você pode ativá-lo mesmo se estiver misturando tipos de consulta.
Nome do aplicativo = MyProgramName
Agora, quando você desejar ver uma lista de conexões ativas consultando a tabela sysprocesses, o nome do seu programa aparecerá na coluna program_name em vez de em ".Net SqlClient Data Provider"
fonte
TableDiff.exe
Ligação
fonte
Uma técnica TSQL menos conhecida para retornar linhas em ordem aleatória:
fonte
No Management Studio, você pode obter rapidamente uma lista de colunas delimitada por vírgulas para uma tabela:
Isso é útil quando você não deseja usar o formato hediondo retornado clicando com o botão direito do mouse na tabela e escolhendo Script Table As ..., depois Insert To ... Esse truque funciona com as outras pastas em que ele lhe dará uma lista delimitada por vírgula de nomes contidos na pasta.
fonte
Construtores de linha
Você pode inserir várias linhas de dados com uma única instrução de inserção.
fonte
Se você deseja conhecer a estrutura da tabela, índices e restrições:
fonte
HashBytes () para retornar o hash MD2, MD4, MD5, SHA ou SHA1 de sua entrada.
fonte
Descobrir as consultas mais populares
Link com o commnad
fonte
A guia de resultados espaciais pode ser usada para criar arte .
digite a descrição do link aqui http://michaeljswart.com/wp-content/uploads/2010/02/venus.png
fonte
EXCETO e INTERSECT
Em vez de escrever junções e subconsultas elaboradas, essas duas palavras-chave são uma maneira mais rápida e legível de expressar a intenção da sua consulta ao comparar dois resultados da consulta. Novo no SQL Server 2005, eles complementam fortemente o UNION, que já existe na linguagem TSQL há anos.
Os conceitos de EXCEPT, INTERSECT e UNION são fundamentais na teoria dos conjuntos, que serve como base e fundamento da modelagem relacional usada por todos os RDBMS modernos. Agora, os resultados do tipo de diagrama de Venn podem ser gerados de maneira mais intuitiva e fácil usando o TSQL.
fonte
Eu sei que não está exatamente oculto, mas poucas pessoas sabem sobre o comando PIVOT . Eu era capaz de alterar um procedimento armazenado que usava cursores e levava 2 minutos para executar em um rápido código de 6 segundos que era um décimo do número de linhas!
fonte
útil ao restaurar um banco de dados para fins de teste ou o que for. Re-mapeia os IDs de login corretamente:
fonte
Solte todas as conexões com o banco de dados:
fonte
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
impedirá que novas conexões ocorram também.Soma de verificação da tabela
Soma de verificação de linha
fonte
Não tenho certeza se esse é um recurso oculto ou não, mas me deparei com isso, e achei útil em muitas ocasiões. Você pode concatonar um conjunto de um campo em uma única instrução de seleção, em vez de usar um cursor e percorrer a instrução de seleção.
Exemplo:
Resultados:
fonte
Se você deseja o código de um procedimento armazenado, pode:
(não tenho certeza se é um recurso oculto, mas eu o uso o tempo todo)
fonte
Um truque de procedimento armazenado é que você pode chamá-los de uma instrução INSERT. Achei isso muito útil quando estava trabalhando em um banco de dados do SQL Server.
fonte
No SQL Server 2005/2008, para mostrar os números de linha em um resultado da consulta SELECT:
ORDER BY é uma cláusula obrigatória. A cláusula OVER () informa ao SQL Engine para classificar os dados na coluna especificada (neste caso, OrderId) e atribuir números de acordo com os resultados da classificação.
fonte
Útil para analisar argumentos de procedimento armazenado: xp_sscanf
fonte
Somente data de retorno
ou
fonte
dm_db_index_usage_stats
Isso permite que você saiba se os dados em uma tabela foram atualizados recentemente, mesmo se você não tiver uma coluna DateUpdated na tabela.
Código de: http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/
Informações referenciadas em: SQL Server - Qual é a data / hora da última linha inserida de uma tabela?
Disponível no SQL 2005 e posterior
fonte
Aqui estão alguns recursos que considero úteis, mas muitas pessoas parecem não saber:
Ligação
Ligação
fonte
Encontre registros cuja data esteja em algum lugar da semana atual.
Encontre registros cuja data ocorreu na semana passada.
Retorna a data para o início da semana atual.
Retorna a data do início da semana passada.
fonte
Não é um recurso oculto, mas configura os mapeamentos de teclas no Management Studio em Ferramentas \ Opções \ Teclado: Alt + F1 é padronizado como sp_help "texto selecionado", mas não consigo viver sem adicionar Ctrl + F1 para sp_helptext "texto selecionado"
fonte
Colunas computadas persistentes
Ligação
fonte
Há momentos em que não há coluna adequada para classificar, ou você apenas deseja a ordem de classificação padrão em uma tabela e deseja enumerar cada linha. Para fazer isso, você pode colocar "(selecione 1)" na cláusula "ordenar por" e obter o que deseja. Legal, não é?
fonte
Criptografia simples com EncryptByKey
fonte