Pergunta

Estou prestes a herdar um conjunto de conjunto vasto e complexo de procedimentos armazenados que fazem o processamento mensal em grandes conjuntos de dados.

Estamos no processo de depuração-los para que eles coincidir com o processo original que foi escrito em VB6. A razão pela qual decidiu re escrevê-los em T-SQL é porque o processo vb leva dias e este novo processo leva horas.

Tudo isso é bom, mas como eu posso fazer estes pedaços agora maciças de código T-SQL (1.5k + linhas), mesmo remotamente legível / sustentável.

Qualquer experiência em fazer T-SQL não é muito de dor de cabeça é muito bem-vindos.

Foi útil?

Solução

Primeiro, crie um diretório cheio de arquivos .sql e mantê-los lá. Adicionar este conjunto de arquivos SQL para um sistema de controle de revisão. SVN funciona bem. Tem uma ferramenta que carrega dentro seu banco de dados, substituindo as existentes.

Tenha um banco de dados de teste e relatórios de base mostrando o que a saída do processamento mensal deve ser parecida. Os testes também deve ser na forma de arquivos .sql sob controle de versão.

Agora você pode refatorar seus procs tanto quanto você gosta, e executar os testes depois de confirmar a função correta.

Outras dicas

Para formatar / pretty-tificar SQL, eu tive sucesso com http: //www.sqlinform .com / -. versão online gratuita que você pode experimentar, e uma versão para desktop também disponível

SQLinForm é um formatador de código SQL automático para todos os principais bancos de dados (Oracle, SQL Server, DB2 / UDB, Sybase, Informix, PostgreSQL, MySQL, etc), com muitas opções de formatação.

Definitivamente começar a formatar o código, especialmente recortes.

Então modularizar o SQL. Retire os pedaços em pequenos, procedimentos descritiva nomeados e funções em seus arquivos sozinho stand próprio. Acho isso só funciona muito bem com melhorar o meu entendimento de arquivos SQL grandes.

ApexSQLScript é uma grande ferramenta para criação de scripts para fora um banco de dados inteiro -. Você pode então verificar que no controle de origem e gerenciar alterações

Eu também descobri que documentar os sprocs consistentemente permite retirar informações sobre eles usando os dados sobre o código-fonte em sys.sql_modules -. Você pode usar tags ou o que quer subsistemas documento de ajuda

Além disso, use esquemas (ou mesmo vários bancos de dados) -. Isto realmente vai ajudar a dividir o seu banco de dados em unidades lógicas e apontar problemas de arquitetura

Quanto código grande, eu encontrei recentemente o recurso SQL2005 CTE a ser muito útil no gerenciamento de código com muitas consultas aninhadas (nem mesmo recursiva). Em vez de gerenciar um bando de nidificação e recuo, CTEs podem ser declarados e edificados e, em seguida, usado na declaração final. Isso também ajuda na refatoração como parece muito mais fácil de remover consultas aninhadas redundantes e colunas.

Stored Procs e UDFs são vitais para o gerenciamento de uma grande base de código e eliminação de cantos escuros. Eu não encontrei vistas a ser terrivelmente útil, porque não são parametrizável (UDFs pode ser usado nestes casos, se os conjuntos de resultados são pequenos).

Tente modularizar o SQL, tanto quanto possível e ter um conjunto de testes que lhe permitirá manter, refatorar e adicionam recursos quando necessário. Uma vez tive o prazer de herdar uma Proc que totalizaram 5000 linhas e ainda tenho pesadelos sobre isso. Uma vez que o projeto acabou Eu imprimi o proc armazenados para um riso destorying árvores X no processo. Durante uma de nossas empresas se semanalmente de sessões I colocou-o de ponta a ponta e esticado todo o comprimento do edifício. Zado isso como um exemplo de procedimentos como não escrever e manter armazenados.

Uma coisa que você pode fazer é ter um script automatizado para armazenar todas as alterações para o controle de origem para que você possa rever as alterações aos procedimentos (usando uma comparação com as versões anteriores e atuais)

Não é definitivamente livre, mas para manter o seu T-SQL formatado de uma maneira consistente, de Redgate Software SQL Prompt é muito útil. Enquanto sintaxe do seu proc é correto, um par de teclas (Ctrl + K, Y) reformata tudo instantaneamente. As opções dar-lhe um monte de controle sobre como o SQL é formatado.

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