Analisar valores padrão de parâmetros usando PowerShell – Parte 3


ParamParser no GitHub https://github.com/AaronBertrand/ParamParserNa parte 1 e na parte 2 desta série, apresentei o ParamParser: um módulo do PowerShell que ajuda a analisar informações de parâmetros – incluindo valores padrão – de procedimentos armazenados e funções definidas pelo usuário, porque o SQL Server não fará isso por nós.

Nas primeiras iterações do código, eu simplesmente tinha um arquivo .ps1 que permitia que você colasse um ou mais corpos de módulo em um $procedure variável. Havia muita coisa faltando nessas primeiras versões, mas abordamos várias coisas até agora:

  • Agora é um módulo adequado – você pode correr Import-Module .ParamParser.psm1 e então ligue para o Get-ParsedParams função durante uma sessão (além dos outros benefícios que você obtém de um módulo). Esta não foi uma conversão trivial – parabéns novamente para Will White.
  • Suporte de função definida pelo usuário – Expliquei na parte 2 como os nomes das funções são mais difíceis de analisar do que os nomes dos procedimentos; o código agora lida com isso corretamente.
  • Automatizando ScriptDom.dll – não temos permissão para redistribuir este arquivo de chave, e porque você pode encontrar problemas se não o tiver (ou tiver uma versão desatualizada), Will criou init.ps1, que baixa e extrai automaticamente a versão mais recente (atualmente 150.4573.2) e a coloca na mesma pasta que os outros arquivos.
  • Fontes adicionais – você ainda pode passar um bloco de script bruto, se quiser, mas agora também pode usar várias instâncias e bancos de dados como fontes, fazer referência a um ou mais arquivos diretamente ou obter todos .sql arquivos de um ou mais diretórios. Vou mostrar alguns exemplos de sintaxe abaixo.
  • A saída indica a fonte – uma vez que você pode processar vários arquivos ou bancos de dados em uma chamada, e você pode ter vários objetos com o mesmo nome, incluindo a fonte ajuda a desambiguar. Não posso fazer muito se você tiver duas instâncias de CREATE PROCEDURE dbo.blat ... no mesmo arquivo ou script bruto, e a fonte nem mesmo é indicada se você usar -Script e passe em uma string.
  • Resultado aprimorado – você ainda pode despejar tudo no console, mas também pode usar Out-GridView para visualizar os resultados em formato de grade (aqui está um exemplo enfadonho de AdventureWorks2019) ou registrar as informações de parâmetro em um banco de dados para consumo em outro lugar.

Siga as instruções no leiame para fazer o download e configurar. Depois de clonar o repositório, execute .init.ps1 e depois Import-Module .ParamParser.psm1. Teste-o com um exemplo simples, como:

Get-ParsedParams -Script "CREATE PROCEDURE dbo.a @b int = 5 out AS PRINT 1;" -GridView

Resultado (clique para ampliar):

Analisar valores padrão de parâmetros usando PowerShell - Parte 3 3

No entanto, existem muitas outras combinações de parâmetros. O cabeçalho da ajuda mostra uma boa parte da sintaxe possível (e obrigado novamente a Will por muita limpeza incrível aqui):

Resultados:

Get-ParsedParams [-Script] [[-GridView]] [[-Console]] [[-LogToDatabase]] [[-LogToDBAuthenticationMode] {SQL | Janelas}] [<CommonParameters>]

Get-ParsedParams [-File] [[-GridView]] [[-Console]] [[-LogToDatabase]] [[-LogToDBAuthenticationMode] {SQL | Janelas}] [<CommonParameters>]

Get-ParsedParams [-Directory] [[-GridView]] [[-Console]] [[-LogToDatabase]] [[-LogToDBAuthenticationMode] {SQL | Janelas}] [<CommonParameters>]

Get-ParsedParams [-ServerInstance] [-Database] [[-AuthenticationMode] {SQL | Janelas}] [[-GridView]] [[-Console]] [[-LogToDatabase]] [[-LogToDBAuthenticationMode] {SQL | Janelas}] [<CommonParameters>]

Mais alguns exemplos

Para analisar todos os objetos em c:tempdb.sql:

Get-ParsedParams -File "C:tempdb.sql" -GridView

Para analisar todos os arquivos .sql em c:tempscripts (recursivo) e h:sql (também recursivo):

Get-ParsedParams -Directory "C:tempscripts", "H:sql" -GridView

Para analisar todos os objetos em msdb na instância nomeada local SQL2019 usando a autenticação do Windows:

Get-ParsedParams -ServerInstance ".SQL2019" -Database "msdb" -GridView

Para analisar todos os objetos em msdb, floob, e AdventureWorks2019 na instância nomeada local SQL2019 e serão solicitadas as credenciais de autenticação SQL:

Get-ParsedParams -ServerInstance ".SQL2019" -Database "msdb","floob","AdventureWorks" -AuthenticationMode "SQL" -GridView

Para analisar todos os objetos em msdb na instância nomeada local SQL2019 e passar credenciais de autenticação SQL:

$password = ConvertTo-SecureString -AsPlainText -Force -String "[email protected]" $credential = New-Object -TypeName "PSCredential" -ArgumentList "SQLAuthUsername", $password Get-ParsedParams -ServerInstance ".SQL2019" -Database "msdb" -AuthenticationMode "SQL" -SqlCredential $credential -GridView read more

Dicas para economizar tempo do SQL Server Management Studio


Por: Ian Fogelman | Atualizado: 2020-09-29 | Comentários (8) | Relacionado: Mais> SQL Server Management Studio

Problema

Não consigo pensar em uma ferramenta com a qual passei mais tempo em minha carreira do que o SQL Server Management Studio (SSMS). Embora eu tenha trabalhado nele quase todos os dias por mais de 7 anos, ainda estou encontrando eficiências de economia de tempo de vez em quando. Aqui está minha lista dos 5 principais recursos do SSMS que eu gostaria de conhecer antes.

Solução

Abaixo estão 5 dicas que considero muito úteis ao trabalhar com o SSMS.

1 – Arrastando Nomes de Objetos para o Editor de Consultas com SQL Server Management Studio

A maioria das pessoas mantém o Pesquisador de Objetos aberto para navegar por tabelas, procedimentos e bancos de dados, mas ele também possui um recurso de arrastar e soltar que pode ajudar na escrita de consultas.

  • Neste exemplo, primeiro construo uma instrução SELECT arrastando o nome da tabela do Pesquisador de Objetos.
  • Em seguida, crie uma instrução DELETE arrastando o nome da tabela e o nome da coluna do Pesquisador de Objetos.
  • Por fim, extraio a definição do objeto e executo um procedimento armazenado obtendo um nome de procedimento armazenado.

Veja em ação abaixo.

arrastando objetos

2 – Relatórios do Reporting Services hospedados localmente no SQL Server Management Studio

Reporting Services é ótimo. Ele fornece um alvo implantável para compartilhar seus relatórios de negócios com colegas de trabalho para as necessidades de negócios. No entanto, há um pouco de trabalho braçal para colocar um servidor de instância de relatório em funcionamento. E se você só precisar executar um relatório ad-hoc rápido para ficar de olho em um de seus bancos de dados? Se você tiver ferramentas de dados do SQL Server (ou o equivalente moderno) em sua estação de trabalho, poderá utilizar relatórios personalizados.

Você pode construir um relatório SSRS e copiar o arquivo rdl no diretório de relatórios personalizados. O caminho deve ser semelhante a: C: Usuários Ian Documentos SQL Server Management Studio Relatórios personalizados.

Por exemplo, criei um relatório SSRS para executar o código a seguir. Para este relatório, usei o comando MSforeachdb em combinação com algum SQL dinâmico e a exibição SYS.OBJECTS para consultar cada banco de dados para contagens e tipos de objetos.

IF OBJECT_ID('TEMPDB..#TEMP_RESULTS') IS NOT NULL DROP TABLE #TEMP_RESULTS CREATE TABLE #TEMP_RESULTS ( [DB] VARCHAR(MAX), [ObjectType] VARCHAR(MAX), [Count] VARCHAR(MAX) ) EXECUTE master.sys.sp_MSforeachdb 'USE [?]; INSERT INTO #TEMP_RESULTS SELECT DISTINCT DB_NAME() DB, TYPE_DESC , S2.OBJECTCOUNT FROM SYS.OBJECTS AS S1 CROSS JOIN (SELECT TYPE,COUNT(*) AS ObjectCount FROM SYS.OBJECTS GROUP BY TYPE ) AS S2 WHERE S1.TYPE = S2.TYPE;' SELECT * FROM #TEMP_RESULTS read more

Kit de primeiros respondentes e kit de ferramentas de consultor atualizados para outubro de 2020


Em preparação para a nova classe Fundamentals of Columnstore deste mês, sp_BlitzIndex tem alguns novos truques legais! Também mostrarei como usá-los gratuitamente na próxima aula Como uso o kit de primeiros respondentes.

Os índices columnstore são como um índice em cada coluna (chamado de segmento) e, além disso, eles são particionados (chamados de grupo de linhas). Quando você quiser visualizar como os dados são armazenados, chame sp_BlitzIndex apenas para aquela tabela:

Kit de primeiros respondentes e kit de ferramentas de consultor atualizados para outubro de 2020 6

O último conjunto de resultados fornece uma linha por grupo de linhas, mais colunas para cada coluna da tabela, mostrando qual intervalo de dados está armazenado em cada combinação de grupo / segmento de linha. Ele ajuda você a entender melhor quais partes da tabela o SQL Server será capaz de eliminar e quais partes ele ainda precisará examinar. Isso também afeta a forma como carregamos os dados e como gerenciamos as reconstruções de índice. read more

Construindo SQL ConstantCare®: Com quais crescimentos de banco de dados você se importa?


O SQL ConstantCare® alerta você quando seus bancos de dados apresentam crescimentos incomuns.

Não, não como aquele no seu pescoço. E você realmente deveria dar uma olhada nisso. Não, estou falando de um banco de dados que repentinamente aumenta de tamanho, deixando você desconfiado se alguém criou uma tabela de backup ou construiu um conjunto de índices ridiculamente grandes.

Mas Richie estava trabalhando em uma atualização dos testes de unidade, e começamos a nos perguntar:

Com que tamanho dos crescimentos você se preocupa pessoalmente? read more

Introdução ao Gremlin – SQLServerCentral


Apache TinkerPop é uma estrutura de computação gráfica de código aberto. Uma rede de computação gráfica é um conjunto de vértices e arestas na rede. Se compararmos um banco de dados de gráfico com os bancos de dados relacionais tradicionais, podemos assumir que cada linha em uma tabela de um banco de dados relacional é equivalente a um vértice na rede de grafos. Da mesma forma, cada coluna de uma linha em uma tabela de banco de dados relacional é equivalente às propriedades de um vértice. As arestas conectam os vértices em um banco de dados de gráficos, assim como os relacionamentos de chave primária e estrangeira conectam registros em tabelas diferentes. read more

SQL Server Clustered Indexes internals with examples



In this article, we will learn the SQL Server clustered index concept and some internal details. Indexes are the
database objects that accelerate the performance of data accessing when are designed properly. A clustered index is
one of the main index types in SQL Server and the working principle is a bit complicated but in the next sections of
this article, we are going to simply learn the clustered index working principle and uncover the secrets.

What is a clustered index?


SQL Server clustered index creates a physical sorted data structure of the table rows according to the defined index
key. read more

O que há de novo no Flyway 7.0


O que há de novo no Flyway 7.0 11

A versão 7.0 do Flyway acaba de ser lançada e com ela vêm novos recursos que aumentam a flexibilidade de implantação. A versão 7.0 também apresenta Flyway Teams, que combina as edições Pro e Enterprise em uma oferta abrangente.

Nesta sessão, David Ong, Flyway Solution Specialist da Redgate, irá guiá-lo através das equipes Flyway e os novos recursos interessantes da versão mais recente, incluindo:

  • Como ‘escolher’ a dedo as versões e desfazer migrações fora da ordem de implantação padrão, permitindo um grande salto em flexibilidade de implantação.
  • Fazendo ‘correções’ em seu ambiente e incluindo-as em seu fluxo de trabalho de implantação, mantendo cada um de seus ambientes em sincronia sem comprometer seus processos.
  • A nova compatibilidade do Azure Synapse.



read more

Bancos de dados são como resfriadores walk-in. # tsql2sday


Na parte de trás de um restaurante, há um refrigerador walk-in (ou alguns deles).

Quando um chef precisa fazer algo, ele vai até o refrigerador, reúne os ingredientes necessários e depois sai para a cozinha para cozinhar.

Ela não cozinhar dentro do walk-in – isso não seria eficiente. Ela apenas pega seus ingredientes e então trabalha em outro lugar. O frigorífico não é um local para trabalhar: é apenas para guardar os ingredientes.

Ela entra na geladeira o mínimo possível para preparar seus pratos. No início do turno, ela vai buscar ingredientes suficientes para preparar várias porções de alguma coisa – ela não sonharia em fazer uma viagem separada para a geladeira para cada prato de salada que precisa fazer. (Ela pode até preparar várias saladas de uma vez e depois mantê-las por perto para pedidos.) read more

Como terminamos com o Git


A série até agora:

  1. Como acabamos com o git
  2. Anatomia git

É fácil supor que apenas uma pequena fração dos desenvolvedores de hoje teve a chance de experimentar o que estava escrevendo código na década de 1990 ou mesmo no início de 2000. Em muitos casos, cada desenvolvedor costumava escrever código em sua própria máquina e então mesclá-lo manualmente com outras versões possivelmente gerenciadas por colegas de equipe. Manter um histórico limpo e claro das diferentes versões do código era, na maior parte, um sonho inatingível. Foi definitivamente uma abordagem bastante ingênua, mas bastante comum também. Não duraria muito, entretanto. read more