Roberto Brunetti

Developing in the cloud

.NET Programming

Archives

VSTS for DB Pro: Aggiunta e successivo Refactor di un campo

Tutte le volte si che porta in produzione una modifica di schema viene utilizzato dietro le quinte lo Schema Compare, strumento che appunto esegue una comparazione fra gli oggetti del progetto rispetto al database indicato.

Se, durante lo sviluppo, si aggiunge un campo ad una tabella e si esegue successivamente un Refactor (operazione che capita spesso quando si progettano aggiunte ad un db esistente: "aggiungo intanto il placeholder e poi decido i nomi") non si incorre nel problema di DROP table che affligge il Refactor dei campi. Questo perchè appunto lo Schema Compare vede solo le differenze fra progetto e target DB. Il risultato quindi è una ALTER TABLE per l'aggiunta del campo.

In questo caso ho aggiunto il campo DescrizioneAggiuntiva per poi eseguire un Refactor su DescrizioneAggiuntivaEx. Al termine ho creato lo script di update. 

/*

This script was created by Visual Studio on 02/02/2007 at 12.53.

Run this script on peppe.SalamiManagement.dbo to make it the same as IntroVSTSDBPRO02.

Please back up your target database before running this script.

*/

GO

SET NUMERIC_ROUNDABORT OFF

GO

SET ANSI_PADDING ON

GO

SET ANSI_WARNINGS ON

GO

SET CONCAT_NULL_YIELDS_NULL ON

GO

SET ARITHABORT ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors

GO

CREATE TABLE #tmpErrors (Error int)

GO

SET XACT_ABORT ON

GO

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

GO

BEGIN TRANSACTION

GO

PRINT N'Altering [dbo].[tabSalami]'

GO

ALTER TABLE [dbo].[tabSalami] ADD

[SalameDescrizioneAggiuntivaEx] [dbo].[udtDescrizione] NULL

GO

IF @@ERROR<>0 AND @@TRANCOUNT>0 ROLLBACK TRANSACTION

GO

IF @@TRANCOUNT=0 BEGIN INSERT INTO #tmpErrors (Error) SELECT 1 BEGIN TRANSACTION END

GO

IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION

GO

IF @@TRANCOUNT>0 BEGIN

PRINT 'The database update succeeded'

COMMIT TRANSACTION

END

ELSE PRINT 'The database update failed'

GO

DROP TABLE #tmpErrors

GO

Posted: feb 02 2007, 12:53 by rob | with 2 comment(s)
Filed under:

Comments

ASP.NET Italiano Blogs said:

Nelle scorse settimane ho pubblicato questa serie di articoli introduttivi su VSTS 2010 e .NET 4.0. Visual

# dicembre 3, 2008 7:27

devcon2009 said:

DevCon 2009 sarà una conferenza di approfondimento sulla versione 3.5 del .NET Framework e di anteprima

# dicembre 7, 2008 12:51