Visual Studio alm rangers


Objetivos Gerais do Cenário



Baixar 7.59 Mb.
Página61/62
Encontro30.10.2016
Tamanho7.59 Mb.
1   ...   54   55   56   57   58   59   60   61   62

Objetivos Gerais do Cenário




  • Familiarização com o comando VSDBCMD e suas capacidades para:

    • Encontrar diferenças nos modelos

    • Encontrar diferenças entre modelo versus banco de dados

    • Realizar o deploy da solução utilizando o VSDBCMD

Duração estimada: 10 minutos

Cenário 1: Garanta que você testou seu banco de dados com a versão correta de produção SEM ter acesso ao ambiente de produção (Versão confiável do DBA)




  1. Extraia o schema atual do banco de dados de produção

Administradores de banco de dados muitas vezes tratam os bancos de dados como se fossem seus filhos. O resultado disso é que eles não querem que ninguém do time de build ou desenvolvimento os toquem. Além disso, há casos onde o banco de dados contém informação sensível e o acesso é restrito a um pequeno gurpo de pessoas. Isso coloca o desenvolvedor na situação onde é necessário instruir o DBA sobre como procurar por desvios de modelo. O comando no passo “c” é o comando que você deve enviar ao DBA para que ele possa executá-lo e lhe devolver o arquivo .dbschema resultante, facilitando o processo de busca por desvios de modelo.

    1. Abra o prompt de comando do Visual Studio. Clique em Start, aponte para All Programs, aponte para Microsoft Visual Studio 2010, aponte para Microsoft Visual Studio 2010 Tools e clique em Visual Studio Command Prompt (2010).



    1. Localize a pasta C:\HOL\DatabaseProjectGuidance\Verification and Testing\ModelDrift\Scenario1



    1. Extraia o schema de banco de dados utilizando o comando VSDBCMD a seguir:

vsdbcmd /action:Import /dsp:sql /modelfile:.\TheVersionExtractedBeforeDeployment.dbschema /cs:"Data Source=.;Initial Catalog=AdventureWorksDB;Integrated Security=True"

Isso irá extrair o schema e gerar um arquivo de modelo na pasta atual.



  1. Compare o schema versionado com o schema extraído do modelo atual de produção.



    1. Agora iremos comparar o modelo de banco de dados extraído de produção com o modelo do nosso sistema de controle de código-fonte. Este modelo pode tanto ser o modelo do momento em que publicamos a versão 1, sob o qual continuamos o desenvolvimento para a versão 2 ou qualquer branch para hotfixes que corresponda ao sistema atualmente em produção, caso os hotfixes tenham sido propagados para o ciclo de desenvolvimento.

vsdbcmd /action:Deploy /dsp:sql /modelfile:.\V1SchemaOfTheDatabase_WeBuildOurDevelopmentAndTestingOn.dbschema /DeploymentScriptFile:.\V1_Model_Drift_DeployScript.sql /p:TargetDatabase=AdventureWorks2008 /Targetmodel:.\TheVersionExtractedBeforeDeployment.dbschema

Você irá notar que utilizamos o parâmetro /DeploymentScriptFile na chamada da linha de comando. Isso irá instruir o deployment para não aplicar as alterações, apenas criando o arquivo com o script necessário para sincronizar o arquivo especificado como TargetModelFile com o arquivo especificado como SourceModel. Se nenhuma mudança foi realizada após a versão 1, seja em em produção ou em desenvolvimento, podemos ter certeza de que realizamos testes com uma versão estável.



    1. Abra o arquivo V1_Model_Drift_DeployScript.sql no diretório atual.



    1. Enquanto rola pelo arquivo .sql, você verá que nenhuma mudança é feita ao banco dados. De fato, o único conteúdo do arquivo diz respeito a checagem do ambiente alvo do deployment e preparação do script através da definição de algumas variáveis. A parte do script que faz as alterações, geralmente vem logo após o comando USE DATABASENAME, está vazia. Assim podemos ter certeza de que nenhuma mudança foi feita no tempo transcorrido entre o último deployment.

/*

Deployment script for AdventureWorks2008

*/
GO

SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;


SET NUMERIC_ROUNDABORT OFF;

GO

:setvar DatabaseName "AdventureWorks2008"



:setvar DefaultDataPath ""

:setvar DefaultLogPath ""


GO

USE [master]


GO

:on error exit

GO

IF (DB_ID(N'$(DatabaseName)') IS NOT NULL



AND DATABASEPROPERTYEX(N'$(DatabaseName)','Status') <> N'ONLINE')

BEGIN


RAISERROR(N'The state of the target database, %s, is not set to ONLINE. To deploy to this database, its state must be set to ONLINE.', 16, 127,N'$(DatabaseName)') WITH NOWAIT

RETURN


END
GO
IF NOT EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)')

BEGIN


RAISERROR(N'You cannot deploy this update script to target . The database for which this script was built, AdventureWorks2008, does not exist on this server.', 16, 127) WITH NOWAIT

RETURN


END
GO
IF (@@servername != '')

BEGIN


RAISERROR(N'The server name in the build script %s does not match the name of the target server %s. Verify whether your database project settings are correct and whether your build script is up to date.', 16, 127,N'',@@servername) WITH NOWAIT

RETURN


END
GO
IF CAST(DATABASEPROPERTY(N'$(DatabaseName)','IsReadOnly') as bit) = 1

BEGIN


RAISERROR(N'You cannot deploy this update script because the database for which it was built, %s , is set to READ_ONLY.', 16, 127, N'$(DatabaseName)') WITH NOWAIT

RETURN


END
GO

USE [$(DatabaseName)]


GO

NOVA FUNCIONALIDADE

O VSDBCMD introduziu a nova opção de comparação entre modelos no Visual Studio 2010 para tornar mais fácil realizar uma comparação “offline” dos schemas referentes a qualquer conexão de banco de dados.




Cenário 2: Certifique-se de que você testou a aplicação de banco de dados com a versão obtida, COM acesso ao banco de dados (Versão confiável do desenvolvedor)


Desta vez iremos comparar diretamente o modelo da nossa versão 1 arquivada com a versão atualmente em produção. Nós não iremos criar o modelo primeiro para depois fazer uma comparação modelo versus modelo, uma vez que isso requer que o DBA tenha alguma fé nos desenvolvedores e que estes, por sua vez, utilizem as opções corretas do VSDBCMD para apenas criar o script de upgrade, ao invés de aplicá-lo ao banco de dados de destino.

  1. Compare o schema de banco de dados versionado com o schema atual do banco de dados de produção.



    1. Abra o prompt de comando do Visual Studio. Clique em Start, aponte para All Programs, aponte para Microsoft Visual Studio 2010, aponte para Microsoft Visual Studio 2010 Tools e clique em Visual Studio Command Prompt (2010).



    1. Vá para a pasta C:\HOL\DatabaseProjectGuidance\Verification and Testing\ModelDrift\Scenario2



    1. Agora iremos comparar o modelo de banco de dados extraído de produção com o modelo do nosso sistema de controle de código-fonte. Este modelo pode tanto ser o modelo do momento em que publicamos a versão 1, sob o qual continuamos o desenvolvimento para a versão 2 ou qualquer branch para hotfixes que corresponda ao sistema atualmente em produção, caso os hotfixes tenham sido propagados para o ciclo de desenvolvimento.

vsdbcmd /action:Deploy /dsp:sql /modelfile:.\V1SchemaOfTheDatabase_WeBuildOurDevelopmentAndTestingOn.dbschema /DeploymentScriptFile:.\v1_model_Drift_DeployScript.sql /p:TargetDatabase=AdventureWorks2008 /cs:"Data Source=.;Integrated Security=True"

    1. Abra o arquivo V1_Model_Drift_DeployScript.sql no diretório atual.



    1. Enquanto rola pelo arquivo .sql, você verá que nenhuma mudança é feita ao banco dados. De fato, o único conteúdo do arquivo diz respeito a checagem do ambiente alvo do deployment e preparação do script através da definição de algumas variáveis. A parte do script que faz as alterações, geralmente vem logo após o comando USE DATABASENAME, está vazia. Assim podemos ter certeza de que nenhuma mudança foi feita no tempo transcorrido entre o último deployment


NOTA

  • Esta estratégia não serve apenas como uma forma de encontrar desvios de modelo, mas também como ferramenta para aplicar as mudanças no banco de dados através de scripts. Muitas pessoas preferem criar um script baseado nas mudanças do schema, inspecioná-lo manualmente e aplicá-lo através do SQL Server Management Studio. Imagine que o modelo referenciado em /modelfile seja o modelo que deve ser publicado e que o banco de dados em ConnectionString seja o banco de dados de destino que será atualizado. Para um deployment que inclua somente alterações simples de schema esta técnica pode funcionar. Caso você tenha pre/post scripts você precisa fazer referência ao arquivo de manifesto a ser utilizado no deployment através do parâmeto /ManifestFile.



Catálogo: 2012
2012 -> Fapesp e inpe promovem workshop para discutir relatório do ipcc sobre Riscos de Extremos Climáticos e Desastres nas Américas do Sul e Central
2012 -> Anima Mea Concerto no Convento Corpus Christi, 14junho2015
2012 -> Branches e merge com Visual Studio Team Foundation Server 2012
2012 -> Perfil: Time de Qualidade, Testadores
2012 -> Lista de Biologia Vanessa / Frente a volume 2
2012 -> CÂmara municipal de sapopema estado do paraná cnpj: 77. 774. 487/0001-94 Av. Manoel Ribas, 520, cep – 84. 294-000 Fone/Fax (43) 3548-1258
2012 -> Instituto nacional de estudos e
2012 -> Gabinete do ministro
2012 -> Indice de leis complementar 2012 lei 114 À 154 lei complementar 114 de 19 de janeiro de 2012
2012 -> Agenda do presidente do Ibram, Angelo Oswaldo de Araújo Santos 30 de dezembro de 2014

Baixar 7.59 Mb.

Compartilhe com seus amigos:
1   ...   54   55   56   57   58   59   60   61   62




©bemvin.org 2020
enviar mensagem

    Página principal
Prefeitura municipal
santa catarina
Universidade federal
prefeitura municipal
pregão presencial
universidade federal
outras providências
processo seletivo
catarina prefeitura
minas gerais
secretaria municipal
CÂmara municipal
ensino fundamental
ensino médio
concurso público
catarina município
reunião ordinária
Dispõe sobre
Serviço público
câmara municipal
público federal
Processo seletivo
processo licitatório
educaçÃo universidade
seletivo simplificado
Secretaria municipal
sessão ordinária
ensino superior
Universidade estadual
Relatório técnico
Conselho municipal
técnico científico
direitos humanos
científico período
pregão eletrônico
Curriculum vitae
espírito santo
Sequência didática
Quarta feira
conselho municipal
prefeito municipal
distrito federal
língua portuguesa
nossa senhora
educaçÃo secretaria
Pregão presencial
segunda feira
recursos humanos
educaçÃO ciência
Terça feira
agricultura familiar