Pergunta

Eu costumava trabalhar em um lugar onde uma prática comum era usar Pair Programming. Lembro-me de quantas coisas pequenas que poderiam aprender uns com os outros quando se trabalha em conjunto sobre o código. Pegando novos atalhos, trechos de código etc. com o tempo melhorou significativamente a nossa eficiência de escrever código.

Desde que comecei a trabalhar com SQL Server eu ter sido deixado sozinho. Os melhores hábitos que eu normalmente escolher a partir de trabalhar em conjunto com outras pessoas que eu não posso fazer agora.

Então aqui está a questão:

  • Quais são-lhe dicas sobre eficiência escrever código TSQL usando SQL Server Management Studio?
  • Por favor, mantenha o dicas para 2 - 3 coisas / atalhos que Você acha que melhorar você velocidade de codificação
  • Por favor, fique dentro do escopo de TSQL e SQL Server Management Estúdio 2005/2008 Se o recurso é específicas para a versão de por favor Management Studio indicam: por exemplo. “Funciona com o SQL Server 2008 apenas "

EDIT:

Estou com medo de que eu poderia ter sido mal interpretado por alguns de vocês. Eu não estou procurando dicas para escrever código TSQL eficiente, mas sim para conselhos sobre como usar eficientemente Management Studio para acelerar o próprio processo de codificação.

O tipo de respostas que estou procurando são:

  • uso de modelos,
  • atalhos de teclado,
  • uso de IntelliSense plugins etc.

Basicamente essas pequenas coisas que tornam a experiência de codificação um pouco mais eficiente e agradável.

Foi útil?

Solução 2

comunidade propriedade wiki Resposta - sinta-se livre para editar ou adicionar comentários:

Atalhos de teclado

  • F5 , Ctrl + E ou ALT + X - executa atualmente código TSQL selecionado
  • Ctrl + R - Show / Hide Painel de resultados
  • Ctrl + N - Open Nova consulta Janela
  • Ctrl + L - plano de exibição de execução de consulta

editar atalhos

  • Ctrl + K + C e Ctrl + K + U - comentário / uncomment bloco selecionado de código (sugerido por unsliced)
  • Ctrl + Shift + U e Ctrl + Shift + L - altera o texto selecionado para maiúsculas / minúsculas
  • Shift + ALT + Selecionar o texto - selecione / cortar / copiar / colar um bloco de texto retangular

Complementos

Outras dicas

  • Usando o estilo vírgula prefixo (sugerido por Cade Roux)
  • Usando aceleradores de teclado (sugeridos por kcrumley)

Links Úteis

Outras dicas

Dê uma olhada SQL Prompt de Red Gate - é uma grande produto (como são a maioria das contribuições da Red gate)

SQL Informe também é um grande (online) ferramenta gratuita para a formatação de procedimentos longos que às vezes pode sair mão.

Além disso, eu aprendi com a experiência dolorosa é uma coisa boa para preceder qualquer DELETE declaração com um BEGIN TRANSACTION. Uma vez que você tem certeza de sua declaração está excluindo apenas o que deveria, você pode então COMMIT.

Saved me em várias ocasiões; -)

1 para o SQL Prompt.

Algo real simples que eu acho que eu nunca tinha visto - que vai trabalhar com praticamente qualquer SQL ambiente (e outras línguas mesmo):

Depois de 12 anos de SQL codificação, tornei-me recentemente um convertido ao estilo vírgula prefixo após vê-lo em alguns SSMS código gerado, eu achei muito eficiente. Fiquei muito surpreso que eu nunca tinha visto este estilo antes, especialmente desde que tem impulsionado a minha produtividade imensamente.

SELECT
t.a
,t.b
,t.c
,t.d
FROM t

Isso torna muito fácil de editar listas de seleção, listas de parâmetros, a fim de listas, grupo de listas, etc. Eu estou achando que eu estou gastando muito menos tempo brincando com adição e remoção de vírgulas a partir do final de listas após as operações de recortar e colar -. Eu acho que ele funciona mais fácil porque você quase sempre acrescentar coisas no final, e com vírgulas postfix, que exige que você mover o cursor mais

Experimente, você vai se surpreender -. Eu sei que estava

A minha dica rápida favorita é que quando você expandir um nome de tabela no objeto Explorer, apenas arrastando a palavra colums para a tela de consulta vai colocar uma lista de todas as colunas na tabela para a consulta. Muito mais fácil simplesmente excluir aqueles que não querem que a digitar o que você quer e é tão fácil, que impede as pessoas de usar o seleto sintaxe verdadeiramente terrível *. E evita erros de digitação. Claro que você pode individualmente arrastar colunas também.

Destacando uma entidade em uma consulta e pressionar ALT + F1 será executado sp_help para ele, dando-lhe uma quebra de quaisquer colunas, índices, parâmetros etc.

Tente usar sempre o menor tipo de dados que você pode e índice de todos os campos mais utilizados em consultas.

Tente evitar cursores do lado do servidor, tanto quanto possível. Sempre manter uma 'abordagem baseada em conjunto' em vez de uma 'abordagem processual' para acessar e manipular dados. Cursores muitas vezes pode ser evitado pelo uso de instruções SELECT em seu lugar.

Utilize sempre o plano de execução gráfica no Query Analyzer ou SHOWPLAN_TEXT ou comandos SHOWPLAN_ALL para analisar suas consultas. Certifique-se de suas consultas não um "Índice procurar" em vez de um "Índice de verificação" ou uma "varredura da tabela." A varredura da tabela ou um índice de digitalização é uma coisa muito ruim e deve ser evitado sempre que possível. Escolha os índices corretos nas colunas da direita. Use o mais legível ANSI-Standard Junte cláusulas em vez do velho estilo junta. Com ANSI, a cláusula WHERE é usado apenas para a filtragem de dados. Onde como com estilo mais velho junta, o Where alças cláusula da condição e dados de filtragem participar.

Não deixe que sua consulta aplicações front-end / manipular os dados diretamente usando SELECT ou insert / update / instruções DELETE. Em vez disso, criar procedimentos armazenados, e deixar seus aplicativos acessar esses procedimentos armazenados. Isso mantém os dados de acesso limpo e consistente em todos os módulos de sua aplicação, e ao mesmo tempo centralizando a lógica de negócios dentro do banco de dados.

Falando sobre procedimentos armazenados, não prefixar seus nomes procedimento armazenado com "sp_". O sp_ de prefixo é reservado para o sistema procedimento armazenado que vêm com o SQL Server. Sempre SQL Server encontrar um nome de procedimento começando com sp_, ele primeiro tenta localizar o procedimento no banco de dados mestre, então ele olha para os qualificadores (banco de dados, proprietário) fornecidos, então ele tenta dbo como o proprietário. Então, você realmente pode economizar tempo em localizar o procedimento armazenado, evitando o prefixo "sp_".

instruções SQL Evite dinâmica, tanto quanto possível. SQL dinâmico tende a ser mais lento do que o SQL estático, como o SQL Server deve gerar um plano de execução de cada vez em tempo de execução.

Quando for possível, tente usar a autenticação integrada. Isso significa, esqueça os usuários SA e outros SQL, utilize o usuário Microsoft Provisioning infra-estrutura e manter sempre o seu servidor SQL, up-to-date com todos os patches necessários. Microsoft fazer um bom trabalho a desenvolver, testar e liberar os patches, mas é o seu trabalho para aplicá-lo.

Pesquisar na amazon.com livros com bons comentários sobre ele e comprá-lo!

Ctrl + I para pesquisa incremental . Hit F3 ou Ctrl + I para percorrer os resultados.

Se você arrastar a partir de Object Explorer nó Colunas para uma mesa coloca uma lista CSV de colunas na janela de consulta para você

Teclado aceleradores. Depois de descobrir que tipo de consultas que você escreve muito, procedimentos armazenados de utilitário de gravação para automatizar as tarefas, e mapeá-los para atalhos de teclado. Por exemplo, este artigo fala sobre como evitar digitar 'select top 10 * from SomeBigTable' cada vez que você quer apenas obter um rápido olhar para os dados de exemplo dessa tabela. Eu tenho uma versão muito expandida deste procedimento, mapeado para Ctrl + 5 .
Um pouco mais eu tenho:

  1. Ctrl + 0 : Rapidamente roteiro de dados de uma tabela ou uma proc, UDF, ou a definição de vista
  2. Ctrl + 9 : encontrar qualquer objeto cujo nome contém uma determinada seqüência (para quando você sabe que há um procedimento com "Option" no nome, mas você don 't sabe o que seu nome começa com)
  3. Ctrl + 7 : encontrar qualquer proc, UDF, ou exibição que inclui uma determinada cadeia em seu código
  4. Ctrl + 4 : encontrar todas as tabelas que possuem uma coluna com o nome dado

... e mais alguns que não vêm à mente agora. Algumas dessas coisas podem ser feitas através de interfaces existentes no SSMS, mas as janelas e widgets de SSMS pode ser um carregamento lento pouco para cima, especialmente quando você está consultando contra um servidor através da internet, e eu prefiro não ter que pegar minhas mãos para cima off o teclado de qualquer maneira.

Apenas um minúsculo - seleções retangulares ALT + DRAG vêm em muito útil para copiar + colar listas de coluna alinhados verticalmente (por exemplo, ao escrever manualmente uma grande atualização). Escrita TSQL é sobre a única vez que eu usá-lo!

Para Sub Consultas

Objetos> clique com o botão direito em um table> mesa Script como> selecione a> Clipboard

Depois, é só colar na seção onde você quer que como uma consulta de sub.

Templates / Snippets

Crie seu próprio modelo, com apenas um trecho de código. Então, em vez de abrir o modelo como um novo documento basta arrastá-lo para você consulta atual para inserir o trecho.

Um trecho pode ser simplesmente um conjunto de cabeçalho com comentários ou apenas algumas simples pedaço de código.

transações implícitas

Se você não se lembrar de iniciar uma transação antes de seus statemens de exclusão você pode ir para as opções e definir transações implícitas por padrão em todas as suas consultas. Eles exigem sempre uma consolidação explícita / reversão.

Nível de isolamento

Vá para opções e nível de isolamento definido para READ_UNCOMMITED por padrão. Desta forma, você não precisa digitar um NOLOCK em todas as consultas seu ad hoc. Só não se esqueça de colocar a dica de tabela quando se escreve uma nova exibição ou procedimento armazenado.

banco de dados padrão

Seu login tem um conjunto de banco de dados padrão pelo DBA (Para mim é geralmente aquele indesejado quase o tempo todo).

Se você quer que ele seja um diferente por causa do projeto que você está trabalhando atualmente.

'painel Registered Servers' Em> Botão direito do mouse> Propriedades> guia de propriedades da conexão> conexão ao banco de dados.

Multiple logins

(Estes você já pode ter feito embora)

registrar o servidor várias vezes, cada uma com um login diferente. Você pode então ter o mesmo servidor no objeto do navegador abertas várias vezes (cada um com um login diferente).

Para executar a mesma consulta que você já escreveu com um login diferente, em vez de copiar a consulta apenas fazer um clique direito sobre o painel de consulta> Conexão> Conexão Mudança.

Outra coisa que ajuda a melhorar a precisão do que eu faço não é realmente uma dica estúdio de gestão mas utilizando-se T-SQL.

Sempre que eu escrever uma atualização ou instrução de exclusão, pela primeira vez, eu incorporar um seleto nele para que eu possa ver o que os registros serão afetados.

Exemplos:

select t1.field1,t2.field2
--update t
--set field1 = t2.field2 
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

select t1.* 
--delete t1
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 = 'test'

(note que eu usei select * aqui apenas para ilustração, eu normalmente só selecionar os poucos campos Eu preciso ver que a consulta está correto. Às vezes eu preciso ver campos em outras tabelas inthe se juntar, bem como os registros Eu pretendo apagar para garantir que a juntar-se trabalhado da maneira que eu pensava que seria)

Ao executar este código, você corre o seleto primeiro para garantir que ele está correto, em seguida, comentar a linha de escolha (s) para fora e descomente as partes DELETE ou UPDATE. Ao fazê-lo desta forma, você não acidentalmente executar a exclusão ou atualização antes de ter verificado isso. Além disso, você evitar o problema de esquecer de comentar a escolha causando a atualização para atualizar todos os registros na tabela de banco de dados que pode ocorrer se você usar essa sintaxe e descomente a seleção para executá-lo:

select t1.field1,t2.field2
update t
set field1 = t2.field2 
--select t1.field1,t2.field2
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

Como você pode ver no exemplo acima, se você descomente a selecionar e se esqueça de re comentário-lo fora, oops você acaba de atualizar a tabela inteira e, em seguida, correu uma escolha quando você pensou apenas para executar a atualização. Alguém só fiz isso no meu escritório esta semana tornando-se assim apenas uma pessoa de toda a clientes podem entrar em sites de clientes. Portanto, evite fazer isso.

Use o botão Filtrar no Object Explorer para encontrar rapidamente um determinado objeto (tabela, procedimento armazenado, etc.) a partir de texto parcial no nome ou encontrar objetos que pertencem a um determinado esquema.

Eu tenho uma tarefa agendada que cada noite escreve cada objeto (tabela, sproc, etc.) para um arquivo. Tenho de texto completo conjunto de pesquisa de indexação no diretório de saída, então quando eu estou olhando para uma determinada string (por exemplo, uma constante), que está enterrado em algum lugar do DB posso encontrá-lo muito rapidamente.

Dentro Management Studio você pode usar as tarefas> Gerar Scrips ... comando para ver como executar esta.

Eu gosto de configurar o atalho de teclado Ctrl + F1 como sp_helptext , pois isso permite que você para destacar um procedimento armazenado e rapidamente olhar para ele do código. Acho que é um bom complemento para o padrão ALT + F1 sp_help atalho.

Eu sugiro que você criar padrões para o seu script SQL e cumpri-los. Também usar modelos para criar rapidamente diferentes tipos de procedimentos armazenados e funções. Aqui está uma pergunta sobre modelos no SQL Server 2005 Management Studio

Como você cria SQL Server 2005 modelos de procedimento armazenado no SQL Server 2005 Management Studio?

Sou desenvolvedor SSMSBoost add-in, que foi recentemente lançado para SSMS2008 / R2, a intenção era adicionar adicionar recursos que aceleram as tarefas diárias de rotina:

shorcuts: F2 - (no Editor SQL): cursor Unted roteiro objeto localizado

Ctrl + F2 - (no Editor SQL): achado objeto localizado sob o cursor no objeto Explorer e focá-la + Ele inclui editor de atalhos, que está faltando em SSMS2008 (está chegando SSMS2012)

Também SSMSBoost acrescenta barra de ferramentas com botões:

  • conexão Syncronize Editor de SQL para Object Explorer (se concentra banco de dados atual em Object Explorer)
  • Gerenciar suas próprias conexões preferenciais e alternar entre eles através de combinação-caixa (incluindo saltos entre servidores)
  • Auto-substituições: digitando " sel " irá substituí-lo por select * from e você também pode adicionar seus próprios pares token-de substituição
  • e alguns recursos mais úteis

SSMSBoost barra de ferramentas

Mostrar a Consulta Designer com Ctrl + Shift + Q

Faça uso da funcionalidade try / catch para o erro de captura.

2005 Programação Avançada SQL Server de Adão Machanic é um grande recurso para as técnicas e práticas sólidas.

Use o encadeamento de propriedade para procedimentos armazenados.

Fazer uso de esquemas para garantir a segurança de dados e funções.

Use Object Explorer Details, em vez de explorador de objeto para a visualização de suas tabelas, desta forma você pode pressionar uma carta e tê-lo ir para a primeira tabela com essa letra prefixo.

Se você trabalha com desenvolvedores, muitas vezes, obter um pedaço de código que é formatado como uma longa linha de código, em seguida, sql pretty printer add-on para o SQL Server Management Studio pode ajuda muito com mais de 60 + formatador opções. http://www.dpriver.com/sqlpp/ssmsaddin.html

Usando marcadores é ótima maneira de manter sua sanidade se você estiver trabalhando com ou solucionar problemas de um processo muito longo. Vamos dizer que você está trabalhando com um campo derivado de uma consulta externa e de definição é mais 200 linhas para baixo dentro da consulta interna. Você pode marcar ambos os locais e, em seguida, rapidamente ir e voltar entre os dois.

Se você precisa escrever um monte de sprocs para uma API de algum tipo. Você pode gostar este ferramentas que eu escrevi quando eu era um programador. Digamos que você tenha uma tabela 200 colunas que precisa ter um sproc escrito para inserir / atualizar e outro para excluir. Porque você não quer que seu aplicativo para acessar diretamente as tabelas. Apenas a parte declaração vai ser uma tarefa tediosa, mas não se uma parte do código é escrito para você. Aqui está um exemplo ...

CREATE PROC upsert_Table1(@col1 int, @col2 varchar(200), @col3 float, etc.)
AS
BEGIN
  UPDATE table1 SET col1 = @col1, col2 = @col2, col3 = @col3, etc.
  IF @@error <> 0
    INSERT Table1 (col1, col2, col3, etc.)
    VALUES(@col1, @col2, @col3, etc.)
END
GO
CREATE PROC delete_Table1(@col1)
AS DELETE FROM Table1 WHERE col1 = @col1

http://snipplr.com / view / 13451 / spcoldefinition-ou-escrita-upsert-sp-in-a-pressão /
Nota: Você também pode obter o código original e artigo escrito em 2002 (eu me sinto velho agora!)
http: //www.planet-source-code .com / vb / scripts / ShowCode.asp? txtCodeId = 549 & lngWId = 5

Usando TAB em texto realçado irá recuar lo. Nice for facilmente organizar seu código em um formato legível. Além disso, Shift + TAB vai Unindent.

F5 para executar a consulta atual é uma vitória fácil, depois disso, os comandos do editor MS genéricas de Ctrl + K + C para comentar o texto selecionado e, em seguida, Ctrl + K + U para remover o comentário.

  • ALT+SHIFT + Seleção

Este é um grande descobri recentemente - ele permite que você escolha uma seção retangular de texto independentemente de quebras de linha. Muito útil para desviar para fora uma subconsulta ou lista rapidamente.

SQL edição expressa completa Devart' é um addon SSMS e é um addon livre e útil. Ele proporciona muito necessária características intellisense formatação de código e.

Eu também uso SSMSToolsPack addon e é muito bom. Eu amo;

  1. É trechos SQL onde você pode criar chaves curtas para trechos de código e ele acrescenta-los automaticamente quando você digita essas teclas e pressione Enter.
  2. Busca através da história para recuperar suas consultas qual você executou meses atrás e esqueceu-se, salvou um monte de meu tempo.
  3. Restaurar última sessão. Agora eu nunca salvar minhas dúvidas se eu tiver que basta reiniciar minhas janelas. Eu só clicar em restaurar a última sessão e minha última sessão começa e restaurado e conexão criada automaticamente.
  4. Criar inserção declarações de resultados da consulta (muito útil). Adoro este addon.

Um pequeno prendedor recentemente introduzido. SSMSToolsPack não é mais livre para SSMS 2012. Ainda é livre para SSMS 2005 e SSMS 2008, até ainda . Use-o apenas se você quiser comprá-lo quando você migrar para o SSMS 2012. Caso contrário, pode ser que é uma boa idéia para desmamar longe dele.

Eu recomendar vivamente SQL da Red Gate Prompt. Auto-descoberta (intellisense em tabelas, procedimentos armazenados, funções e funções nativas) é nada menos que incrível! :)

Ele vem com um preço embora. Não há uma versão livre-ware da coisa.

Estar ciente dos dois (?) Diferentes tipos de janelas disponíveis no SQL Server Management Studio.

Se você clicar com o botão direito em uma tabela e selecione Open ele vai usar uma grade editável que você pode modificar as células em. Se você clicar com o botão direito no banco de dados e selecione New Query ele irá criar um tipo ligeiramente diferente de janela que você pode' t modificar a grade no mas dá-lhe algumas outras características interessantes, como permitir que diferentes trechos de código e permitindo que você executá-los separadamente pela seleção.

Use uma consulta SELECT INTO rapidamente / facilmente fazer tabelas de backup para o trabalho e experimentar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top