Figura 61 Janela com prévia da geração dos dados de exemplo
Pressione F5 para gerar os dados.
Selecione o banco de dados SimpleDatabase conforme mostrado na Figura 62.
Figura 62 Diálogo para selecionar o banco de dados onde serão gerados os dados
Clique em Yes para confirmar a deleção dos dados existentes e a geração dos novos dados. (Figure 63)
Figure 63 Dialog box to check if data has to be first deleted
Propague as mudanças com os dados de exemplo inseridos no banco de dados
Agora que temos dados no banco de dados vamos ver o que acontece quando executamos o deploy com a coluna NOT NULL.
Defina ação de deploy.
No Solution Explorer, clique com o botão direito no projeto SimpleDatabase e selecione Properties.
Altere o valor do campo Deploy action para Create a deployment script (.sql).
Adicione uma coluna NOT NULL na tabela Companies
Abra o arquivo Customers.table.sql expandindo a pasta Schema Objects, Schemas, dbo, Tables.
Adicione a coluna LanguageLocale novamente com o atributo NOT NULL. O script resultante deve estar como abaixo:
CREATE TABLE [dbo].[Customers]
(
Id int NOT NULL,
CompanyId int NOT NULL,
LanguageLocale nvarchar(5) NOT NULL
)
Faça o deploy do projeto
Clique com o botão direito na solução de banco de dados e clique em Deploy para fazer o deploy para o banco de dados especificado. Você verá o progresso do deployment na janela Output do Visual Studio. Ao final da saída registrada na janela output você verá uma seção Deployment script generated to: que contém o caminho para o arquivo .sql contendo as instruções de alteração do banco de dados.
Abra o arquivo .sql gerado localizado no caminho indicado na janela output.
CONCLUSÃO
Você irá perceber que o deployment falha porque a engine de deployment não é capaz de determinar o que fazer com os dados existentes uma vez que não há um valor default especificado para a nova coluna. Você irá obter a mesma informação durante o deployment:
Warning SQL01269: The column [dbo].[Customers].[LanguageLocale] on table [dbo].[Customers] must be added, but the column has no default value and does not allow NULL values. If the table contains data, the ALTER script will not work. To avoid this issue, you must add a default value to the column or mark it as allowing NULL values.
Isso significa que o seguinte comando falharia no caso de haverem dados na tabela:
Compartilhe com seus amigos: |