Procedura dettagliata: creazione e distribuzione di un nuovo database con controllo delle versioni
In questa procedura dettagliata viene creato un database semplice che contiene due tabelle e una stored procedure. Per completare il processo, è necessario creare un progetto di database, quindi creare oggetti di database in tale progetto e infine compilare e distribuire le modifiche in un server database. La creazione di un progetto di database consente di inserire schema di database nel controllo delle versioni inserendo il progetto di database nel controllo delle versioni.
Lo scopo di questo argomento non è illustrare la distribuzione in un ambiente di produzione o di preproduzione. Per la distribuzione in questi tipi di ambiente, in genere si utilizza l'utilità VSDBCMD.EXE oppure è possibile effettuare manualmente la distribuzione utilizzando lo script di distribuzione. Per ulteriori informazioni, vedere i seguenti argomenti:
Compilazione e distribuzione di database in un ambiente di produzione o gestione temporanea
Procedura: preparare un database per la distribuzione da un prompt dei comandi tramite VSDBCMD.EXE
I passaggi principali di questa procedura dettagliata sono i seguenti:
Creare un progetto di database.
Creare le tabelle di database.
Creare gli indici, le chiavi e i vincoli relativi a tali tabelle.
Creare due stored procedure.
Configurare le proprietà del progetto di database.
Compilare il progetto di database.
Distribuire il progetto di database.
Inserire il progetto di database nel controllo delle versioni.
Prerequisiti
Per eseguire questa procedura dettagliata, è necessario effettuare l'accesso con un account provvisto delle autorizzazioni per creare un database in un server database che esegue SQL Server 2008.
Per creare il progetto di database
Scegliere Nuovo dal menu File e quindi fare clic su Progetto.
Viene visualizzata la finestra di dialogo Nuovo progetto.
In Modelli installati espandere il nodo Database, quindi fare clic su SQL Server.
Nota
Se si utilizza Visual Studio Professional, in Modelli installati espandere invece il nodo Database e il nodo SQL Server, quindi fare clic su Avanzate.
Nell'elenco dei modelli fare clic su Progetto di database di SQL Server 2008.
In Nome digitare OrdersDB.
Selezionare la casella di controllo Crea directory per soluzione.
Accettare i valori predefiniti per Percorso, Nome soluzione e Aggiungi al controllo del codice sorgente, quindi scegliere OK.
Nota
A questo punto, sarebbe possibile aggiungere la soluzione al controllo delle versioni. In questa procedura dettagliata la soluzione verrà aggiunta al controllo delle versioni nel passaggio finale.
Il nuovo progetto di database OrdersDB verrà visualizzato in Esplora soluzioni.
Scegliere Visualizzazione schema database dal menu Visualizza.
Se non è già visualizzata, verrà aperta la finestra Visualizzazione schema.
A questo punto, aggiungere uno schema al progetto di database.
Per aggiungere lo schema Sales al progetto di database
In Visualizzazione schema espandere il nodo OrdersDB e fare clic sul nodo Schemi.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
Nota
È inoltre possibile fare clic con il pulsante destro del mouse sul progetto OrdersDB in Visualizzazione schema, scegliere Aggiungi, quindi Schema.
In Modelli fare clic su Schema.
Nota
Nell'elenco Categorie è possibile fare clic su Tabelle e visualizzazioni per trovare più facilmente il modello per una tabella.
In Nome digitare Sales come nome da assegnare al nuovo schema.
Fare clic su Aggiungi per aggiungere lo schema al progetto di database.
In Esplora soluzioni verrà visualizzato il nuovo file relativo allo schema del progetto di database. In Visualizzazione schema verrà visualizzato il nuovo oggetto schema. Verrà aperto l'editor Transact-SQL in cui verrà visualizzata la definizione del nuovo schema.
A questo punto, verranno aggiunte le tabelle al progetto di database.
Per aggiungere la tabella Customer al progetto di database
In Visualizzazione schema espandere il nodo Sales, fare clic con il pulsante destro del mouse sul nodo Tables, scegliere Aggiungi e fare clic su Tabella.
In Nome digitare Customer come nome da assegnare alla nuova tabella.
Fare clic su Aggiungi per aggiungere la tabella al progetto di database.
In Esplora soluzioni verrà visualizzato il nuovo file relativo alla tabella del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto tabella. Verrà visualizzato l'editor Transact-SQL con la definizione della nuova tabella.
Nell'editor Transact-SQL modificare la definizione della tabella affinché corrisponda all'esempio seguente:
CREATE TABLE [Sales].[Customer] ( [CustomerID] INT IDENTITY (1, 1) NOT NULL, [CustomerName] NVARCHAR (40) NOT NULL, [YTDOrders] INT NOT NULL, [YTDSales] INT NOT NULL );
Scegliere Salva Sales.Customer.table.sql dal menu File.
In Visualizzazione schema espandere il nodo Sales.Customer.
Nella tabella Sales.Customer espandere il nodo Colonne.
Verranno visualizzate le quattro colonne definite nell'editor Transact-SQL.
A questo punto, aggiungere una chiave primaria alla tabella Customer.
Per aggiungere un indice alla tabella Customer
In Visualizzazione schema, fare clic con il pulsante destro del mouse su Sales.Customer, scegliere Aggiungi e fare clic su Indice.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
In Modelli fare clic su Indice.
In Nome digitare IX_CustomerCustomerName come nome da assegnare al nuovo indice.
Fare clic su Aggiungi per aggiungere l'indice alla tabella Categories.
In Esplora soluzioni verrà visualizzato il nuovo file relativo all'indice del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto indice. Verrà visualizzato l'editor Transact-SQL con la definizione del nuovo indice.
Nota
In Visualizzazione schema l'icona relativa all'indice è contraddistinta dal cerchio rosso contenente una "x" bianca, a indicare che la definizione predefinita contiene un errore. Questo comportamento è previsto perché la definizione predefinita fa riferimento alla colonna "colonna_1", che tuttavia non esiste.
Nell'editor Transact-SQL modificare la definizione dell'indice affinché corrisponda all'esempio seguente:
CREATE INDEX [IX_CustomerCustomerName] ON [Sales].[Customer] (CustomerName)
Scegliere Salva Sales.Customer.IX_CustomerCustomerName.index.sql dal menu File.
Il contrassegno di errore scomparirà dall'icona, a indicare che la definizione dell'indice è ora valida.
A questo punto, aggiungere una chiave primaria alla tabella Customer.
Per aggiungere una chiave primaria alla tabella Customer
In Visualizzazione schema, fare clic con il pulsante destro del mouse su Sales.Customer, scegliere Aggiungi e fare clic su Chiave primaria.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
In Modelli fare clic su Chiave primaria.
In Nome digitare PK_CustomerCustomerID come nome da assegnare alla nuova chiave primaria.
Fare clic su Aggiungi per aggiungere la chiave primaria alla tabella Customer.
In Esplora soluzioni verrà visualizzato il nuovo file relativo alla chiave primaria del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto chiave primaria. Verrà visualizzato l'editor Transact-SQL con la definizione della nuova chiave.
Nota
L'icona relativa alla chiave primaria è contraddistinta dal cerchio rosso contenente una "x" bianca, a indicare che la definizione predefinita contiene un errore. Questo comportamento è previsto perché la definizione predefinita fa riferimento alla colonna "colonna_1", che tuttavia non esiste.
Nell'editor Transact-SQL modificare la definizione della chiave primaria in modo che corrisponda all'esempio seguente:
ALTER TABLE [Sales].[Customer] ADD CONSTRAINT [PK_CustomerCustomerID] PRIMARY KEY (CustomerID)
Scegliere Salva Sales.Customer.PK_CustomerCustomerID.pkey.sql dal menu File.
Il contrassegno di errore scomparirà dall'icona, a indicare che la definizione della chiave primaria è ora valida.
A questo punto, aggiungere la tabella Orders.
Per aggiungere la tabella Orders
In Visualizzazione schema fare clic su OrdersDB.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
Nota
È inoltre possibile fare clic con il pulsante destro del mouse sul progetto OrdersDB in Visualizzazione schema, scegliere Aggiungi, quindi Tabella.
In Modelli fare clic su Tabella.
In Nome digitare Orders come nome da assegnare alla nuova tabella.
Fare clic su Aggiungi per aggiungere la tabella al progetto di database.
In Esplora soluzioni verrà visualizzato il nuovo file relativo alla tabella del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto tabella. Verrà visualizzato l'editor Transact-SQL con la definizione della nuova tabella.
Nell'editor Transact-SQL modificare la definizione della tabella affinché corrisponda all'esempio seguente:
CREATE TABLE [Sales].[Orders] ( [CustomerID] INT NOT NULL, [OrderID] INT IDENTITY (1, 1) NOT NULL, [OrderDate] DATETIME NOT NULL, [FilledDate] DATETIME NULL, [Status] CHAR (1) NOT NULL, [Amount] INT NOT NULL );
Scegliere Salva Sales.Orders.table.sql dal menu File.
Espandere il nodo Sales.Orders in Visualizzazione schema.
Espandere il nodo Colonne nella tabella Sales.Orders.
Verranno visualizzate le colonne definite nell'editor Transact-SQL.
A questo punto, verrà aggiunto un indice alla tabella Products.
Per aggiungere una chiave primaria alla tabella Orders
In Visualizzazione schema, fare clic con il pulsante destro del mouse su Sales.Orders, scegliere Aggiungi e fare clic su Chiave primaria.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
In Modelli fare clic su Chiave primaria.
In Nome digitare PK_OrdersOrderID come nome da assegnare alla nuova chiave primaria.
Fare clic su Aggiungi per aggiungere la chiave primaria alla tabella Orders.
In Esplora soluzioni verrà visualizzato il file relativo alla nuova chiave primaria del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto chiave primaria. Verrà aperto l'editor Transact-SQL con la definizione della nuova chiave primaria.
Nota
L'icona relativa alla chiave primaria è contraddistinta dal cerchio rosso contenente una "x" bianca, a indicare che la definizione predefinita contiene un errore. Questo comportamento è previsto perché la definizione predefinita fa riferimento alla colonna "colonna_1", che tuttavia non esiste.
Nell'editor Transact-SQL modificare la definizione della chiave primaria in modo che corrisponda all'esempio seguente:
ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [PK_Orders_OrderID] PRIMARY KEY CLUSTERED ([OrderID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
Scegliere Salva Sales.Orders.PK_Orders_OrderID.pkey.sql dal menu File.
Il contrassegno di errore scomparirà dall'icona, a indicare che la definizione della chiave primaria è ora valida.
A questo punto, aggiungere una chiave esterna alla tabella Orders.
Per aggiungere una chiave esterna tra la tabella Orders e la tabella Customer
In Visualizzazione schema, fare clic con il pulsante destro del mouse su Sales.Orders, scegliere Aggiungi e fare clic su Chiave esterna.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
In Modelli fare clic su Chiave esterna.
In Nome digitare FK_OrdersCustomer come nome da assegnare alla nuova chiave esterna.
Fare clic su Aggiungi per aggiungere la chiave esterna alla tabella Orders.
In Esplora soluzioni verrà visualizzato il file relativo alla nuova chiave esterna del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto chiave esterna. Verrà aperto l'editor Transact-SQL con la definizione della nuova chiave esterna.
Nota
L'icona relativa alla chiave esterna è contraddistinta dal cerchio rosso contenente una "x" bianca, a indicare che la definizione predefinita contiene un errore. Questo comportamento è previsto perché la definizione predefinita fa riferimento alla colonna "colonna_1", che tuttavia non esiste.
Nell'editor Transact-SQL modificare la chiave esterna affinché corrisponda all'esempio seguente:
ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [FK_Orders_Customer_CustID] FOREIGN KEY ([CustomerID]) REFERENCES [Sales].[Customer] ([CustomerID]) ON DELETE NO ACTION ON UPDATE NO ACTION;
Scegliere Salva Sales.Orders.FK_OrdersCustomer.fkey.sql dal menu File.
Il contrassegno di errore scomparirà dall'icona, a indicare che la definizione della chiave esterna è ora valida.
A questo punto, verrà aggiunto un vincolo CHECK alla tabella Products.
Per aggiungere un vincolo CHECK alla tabella Orders
In Visualizzazione schema, fare clic con il pulsante destro del mouse su Sales.Orders, scegliere Aggiungi e fare clic su Vincolo CHECK.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
In Modelli fare clic su Vincolo CHECK.
In Nome digitare CK_OrderStatus come nome da assegnare al nuovo vincolo CHECK.
Fare clic su Aggiungi per aggiungere il vincolo alla tabella Products.
In Esplora soluzioni verrà visualizzato il file relativo al nuovo vincolo del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto vincolo. Verrà aperto l'editor Transact-SQL con la definizione del nuovo vincolo.
Nota
L'icona relativa al vincolo è contraddistinta dal cerchio rosso contenente una "x" bianca, a indicare che la definizione predefinita contiene un errore. Questo comportamento è previsto perché la definizione predefinita fa riferimento alla colonna "colonna_1", che tuttavia non esiste.
Nell'editor Transact-SQL modificare la definizione del vincolo affinché corrisponda all'esempio seguente:
ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [CK_OrderStatus] CHECK ([Status] IN ('O','X','F','B'))
Scegliere Salva CK_OrderStatus.chkconst.sql dal menu File.
Il contrassegno di errore scomparirà dall'icona, a indicare che la definizione del vincolo è ora valida.
A questo punto, aggiungere due stored procedure al progetto.
Per creare una stored procedure che aggiunge un cliente
In Visualizzazione schema, in Schemi fare clic con il pulsante destro del mouse su Sales, scegliere Aggiungi e fare clic su Stored procedure.
In Nome digitare uspNewCustomer come nome da assegnare alla nuova stored procedure.
Fare clic su Aggiungi per aggiungere la stored procedure al progetto di database.
In Esplora soluzioni verrà visualizzato il file relativo alla nuova stored procedure del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto stored procedure. Verrà aperto l'editor Transact-SQL con la definizione della nuova stored procedure.
Nell'editor Transact-SQL modificare la definizione della stored procedure affinché corrisponda all'esempio seguente:
CREATE PROCEDURE [Sales].[uspNewCustomer] @CustomerName NVARCHAR (40) AS BEGIN INSERT INTO [Sales].[Customer] (CustomerName) VALUES (@CustomerName); SELECT SCOPE_IDENTITY() END
Scegliere Salva Sales.uspNewCustomer.proc.sql dal menu File.
In Visualizzazione schema espandere il nodo Programmazione, quindi espandere il nodo Stored procedure.
Verrà visualizzata la stored procedure definita nell'editor Transact-SQL.
A questo punto, aggiungere una seconda stored procedure in grado di creare un ordine per un cliente.
Per creare una stored procedure in grado di creare un ordine per un cliente
In Visualizzazione schema fare clic su OrdersDB.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
Nota
È inoltre possibile fare clic con il pulsante destro del mouse sul progetto OrdersDB in Visualizzazione schema, scegliere Aggiungi, quindi Stored procedure.
In Categorie espandere Progetto di database e fare clic su Programmazione.
In Modelli fare clic su Stored procedure.
In Nome digitare uspPlaceNewOrder come nome da assegnare alla nuova stored procedure.
Fare clic su Aggiungi per aggiungere la stored procedure al progetto di database.
In Esplora soluzioni verrà visualizzato il file relativo alla nuova stored procedure del progetto di database. In Visualizzazione schema verrà invece visualizzato il nuovo oggetto stored procedure. Verrà aperto l'editor Transact-SQL con la definizione della nuova stored procedure.
Nell'editor Transact-SQL modificare la definizione della stored procedure affinché corrisponda all'esempio seguente:
CREATE PROCEDURE [Sales].[uspPlaceNewOrder] @CustomerID INT, @Amount INT, @OrderDate DATETIME, @Status CHAR (1)='O' AS BEGIN DECLARE @RC INT BEGIN TRANSACTION INSERT INTO [Sales].[Orders] (CustomerID, OrderDate, FilledDate, Status, Amount) VALUES (@CustomerID, @OrderDate, NULL, @Status, @Amount) SELECT @RC = SCOPE_IDENTITY(); UPDATE [Sales].[Customer] SET YTDOrders = YTDOrders + @Amount WHERE [CustomerID] = @CustomerID COMMIT TRANSACTION RETURN @RC END
Scegliere Salva Sales.uspPlaceNewOrder.proc.sql dal menu File.
In Visualizzazione schema espandere il nodo Programmazione, quindi espandere il nodo Stored procedure.
Verrà visualizzata la stored procedure definita nell'editor Transact-SQL.
A questo punto, verranno configurate le impostazioni del progetto prima di compilare e distribuire il progetto.
Per configurare le impostazioni per la distribuzione del progetto
In Esplora soluzioni fare clic su OrdersDB (il progetto, non la soluzione).
Scegliere Proprietà di OrdersDB dal menu Progetto.
Verrà visualizzata la finestra delle proprietà del progetto.
Nota
È inoltre possibile fare clic con il pulsante destro del mouse su OrdersDB in Esplora soluzioni e quindi scegliere Proprietà.
Fare clic sulla scheda Distribuisci.
Nell'elenco Azione di distribuzione fare clic su Crea uno script di distribuzione (.sql) e distribuisci nel database.
Fare clic sul pulsante Modifica per specificare la connessione di destinazione.
Specificare le informazioni per la connessione al server database in cui si desidera distribuire il database OrdersDB.
In Seleziona o immetti nome di database digitare OrdersDB e fare clic su OK.
Nel campo Connessione di destinazione viene inserita la stringa di connessione. Si noti che il campo Nome database di destinazione è impostato su OrdersDB.
Accettare i valori predefiniti per le altre opzioni.
Scegliere Salva elementi selezionati dal menu File.
Le impostazioni di compilazione del progetto verranno salvate.
A questo punto, verrà compilato il progetto di database.
Per compilare il progetto di database
Scegliere Compila soluzione dal menu Compila.
Il progetto di database verrà compilato. Se l'operazione viene completata correttamente, sulla barra di stato viene visualizzato il messaggio Compilazione completata e i risultati della compilazione vengono visualizzati nella finestra Output.
Verrà infine distribuito il progetto di database.
Per distribuire il progetto di database nel server database
In Esplora soluzioni fare clic su OrdersDB (il progetto, non la soluzione).
Scegliere Distribuisci OrdersDB dal menu Compila.
Il progetto di database verrà distribuito utilizzando la connessione specificata nella configurazione della build. Nella finestra Output e sulla barra di stato verrà visualizzato il messaggio "Distribuzione completata".
Per archiviare il progetto di database nel controllo delle versioni
In Esplora soluzioni fare clic su OrdersDB (la soluzione).
Scegliere Controllo del codice sorgente dal menu File, quindi fare clic su Aggiungi soluzione a controllo del codice sorgente.
A questo punto, è possibile interagire con il software di controllo delle versioni installato. In questa procedura dettagliata viene illustrato come aggiungere il progetto a Team Foundation Server. Se si desidera utilizzare un altro software di controllo delle versioni, sostituire i passaggi equivalenti. Se si utilizza Team Foundation Server, verrà visualizzata la finestra di dialogo Connetti a Team Foundation Server.
In Connetti a Team Foundation Server scegliere il server in cui si trova il progetto Team al quale si desidera aggiungere la soluzione.
Nota
Se non si dispone di un progetto Team al quale aggiungere il progetto di database, vedere Pianificazione e rilevamento di progetti.
In Progetti Team scegliere il progetto Team al quale si desidera aggiungere il progetto di database e quindi OK.
Verrà visualizzata la finestra di dialogo Aggiungi soluzione OrdersDB al controllo del codice sorgente.
Scegliere OK per accettare i valori predefiniti.
Il progetto di database e i file in esso contenuti verranno sottoposti al controllo delle versioni. Inizialmente sono ancora estratti. È necessario archiviarli per consentire l'accesso ad altri membri del team.
Scegliere Altre finestre dal menu Visualizza e quindi Modifiche in sospeso.
Verrà visualizzata la finestra Modifiche in sospeso.
Nel campo Commento digitare Creazione progetto di database iniziale.
Nella finestra Modifiche in sospeso fare clic su Archivia sulla barra degli strumenti.
Durante l'archiviazione del progetto di database e dei relativi file viene visualizzata la finestra di dialogo Stato archiviazione. Le icone in Esplora soluzioni vengono aggiornate per indicare che i file sono archiviati nel controllo delle versioni.
Passaggi successivi
Per ulteriori informazioni sull'utilizzo di database distribuiti, vedere le altre procedure dettagliate disponibili.
Vedere anche
Concetti
Configurazione dei progetti di database ed esecuzione di una distribuzione dei test
Scrittura e modifica del codice del database
Compilazione e distribuzione di database in un ambiente di produzione o gestione temporanea
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Luglio 2010 |
È stato chiarito lo scopo della procedura dettagliata e sono stati aggiunti collegamenti ad argomenti relativi ad altri scenari di distribuzione. |
Commenti e suggerimenti dei clienti. |