Procedura dettagliata: creazione e distribuzione di un database che fa riferimento a un altro database
In questa procedura dettagliata verrà creato un progetto di database per un database che fa riferimento a un altro database. Il database a cui fa riferimento il progetto viene anche gestito con Visual Studio Premium, ma si tratta di un'altra soluzione. Questo approccio emula lo scenario comune in cui sviluppatori diversi gestiscono database diversi o in cui uno sviluppatore non può distribuire il database che rappresenta la destinazione di un riferimento.
Vengono illustrate le attività seguenti:
Creazione di un progetto di database.
Riferimento a un file dbschema prodotto da un altro progetto di database.
Definizione di variabili e dei relativi valori per il progetto di database a cui si fa riferimento.
Distribuzione del progetto di database nell'ambiente di sviluppo isolato.
Prerequisiti
È necessario avere installato Visual Studio. È inoltre necessario avere completato la Procedura dettagliata: creazione e distribuzione di un nuovo database con controllo delle versioni e avere distribuito il database risultante nell'ambiente di sviluppo isolato. Per aggiungere il progetto al controllo della versione, è necessario avere installato un software di controllo della versione, ad esempio Visual Studio Team Foundation Server.
Per creare il progetto di database
Scegliere Nuovo dal menu File e quindi 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 di 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 ProductsDB verrà visualizzato in Esplora soluzioni.
Scegliere Visualizzazione schema database dal menu Visualizza.
Se non è già visualizzata, verrà visualizzata la finestra Visualizzazione schema.
A questo punto, aggiungere le tabelle al progetto di database.
Per aggiungere la tabella OrderItems al progetto di database
In Visualizzazione schema fare clic con il pulsante destro del mouse sul progetto OrdersDB, scegliere Aggiungi, quindi fare clic su Tabella.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
In Modelli fare clic su Tabella.
Nota
Nell'elenco Categorie è possibile fare clic su Tabelle e visualizzazioni per trovare più facilmente il modello per una tabella.
In Nome digitare OrderItems 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 OrderItems table -- ============================================= CREATE TABLE [dbo].[OrderItems] ( [POID] INT NOT NULL, [ItemID] INT NOT NULL, [ProductID] INT NOT NULL, [Quantity] INT NOT NULL, [Price] FLOAT NOT NULL, [Notes] NVARCHAR(75) NULL ) ON [PRIMARY]
Scegliere Salva dbo.OrderItems.table.sql dal menu File.
In Visualizzazione schema espandere il nodo dbo.OrderItems.
Espandere il nodo Colonne nella tabella dbo.OrderItems.
Verranno visualizzate le colonne definite nell'editor Transact-SQL.
A questo punto, aggiungere una chiave primaria alla tabella OrderItems.
Per aggiungere una chiave primaria alla tabella OrderItems
In Visualizzazione schema, fare clic con il pulsante destro del mouse su dbo.OrderItems, scegliere Aggiungi e fare clic su Chiave primaria.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
In Nome digitare PK_OrderItems come nome da assegnare alla nuova chiave primaria.
Scegliere Aggiungi per aggiungere la chiave primaria.
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 in cui verrà visualizzata 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 in quanto la definizione predefinita fa riferimento alla colonna "column_1" che non esiste.
Nell'editor Transact-SQL modificare la definizione della chiave primaria in modo che corrisponda all'esempio seguente:
-- ============================================= -- Create PK_OrderItems primary key -- ============================================= ALTER TABLE [dbo].[OrderItems] ADD CONSTRAINT [PK_OrderItems] PRIMARY KEY CLUSTERED ([POID], [ItemID]) ON [PRIMARY]
Scegliere Salva dbo.OrderItems.PK_OrderItems.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 il riferimento tra database.
Per aggiungere una visualizzazione che fa riferimento a una tabella in un altro database
In Visualizzazione schema fare clic con il pulsante destro del mouse sul nodo Visualizzazioni, scegliere Aggiungi e fare clic su Visualizzazione.
In Nome digitare ItemDetailsView come nome da assegnare alla nuova visualizzazione, quindi fare clic su Aggiungi.
In Esplora soluzioni verrà visualizzato il nuovo file relativo alla visualizzazione del progetto di database. In Visualizzazione schema verrà visualizzato il nuovo oggetto visualizzazione. Verrà visualizzato l'editor Transact-SQL in cui verrà visualizzata la definizione della nuova visualizzazione.
Nota
In Visualizzazione schema l'icona relativa alla visualizzazione è contraddistinta dal cerchio rosso contenente una "x" bianca, a indicare che la definizione predefinita contiene un errore. Questo comportamento è previsto in quanto la definizione predefinita fa riferimento alla tabella o visualizzazione "[sometableorview]" che non esiste.
Nell'editor Transact-SQL modificare la definizione della tabella affinché corrisponda all'esempio seguente:
-- ============================================= -- Create ItemDetailsView view -- ============================================= CREATE VIEW [dbo].[ItemDetailsView] AS SELECT O.[POID], O.[ItemID], P.[ProductName], P.[UnitPrice], O.[Quantity], O.[Price], O.[Notes] FROM [dbo].[OrderItems] AS O INNER JOIN [ProductsDB].[dbo].[Products] AS P ON P.[ProductID] = O.[ProductID]
Scegliere Salva dbo.ItemDetailsView.view.sql dal menu File.
Scegliere Elenco errori dal menu Visualizza.
Nell'Elenco errori vengono visualizzati sei errori. Questi errori si verificano perché Visual Studio Premium non è in grado di verificare se il database a cui si fa riferimento esiste nel server di destinazione quando si distribuisce il progetto di database. Prendere in considerazione questa condizione in quando è possibile effettuare la distribuzione in percorsi di destinazione diversi. Per risolvere gli errori, definire un riferimento tra database.
Per definire un riferimento tra database
In Esplora soluzioni espandere il progetto OrderItems e fare clic sul nodo Riferimenti.
Scegliere Aggiungi riferimento database dal menu Progetto.
Nota
È inoltre possibile fare clic con il pulsante destro del mouse sul nodo Riferimenti e scegliere Aggiungi riferimento al database.
Verrà visualizzata la finestra di dialogo Aggiungi riferimento database. Poiché la soluzione contiene un solo progetto di database, per impostazione predefinita viene selezionato Schema progetto di database (.dbschema).
Scegliere Sfoglia.
Verrà visualizzata la finestra di dialogo Seleziona file di database.
Specificare il file ProductsDB.dbschema creato quando è stato compilato il progetto nella procedura dettagliata indicata come prerequisito, ad esempio Documenti\Visual Studio 2008\Projects\ProductsDB\ProductsDB\sql\ProductsDB.dbschema, quindi fare clic su Apri.
In Variabili di riferimento al database selezionare la casella di controllo Definisci variabile database. In Nome digitare ReferencedDBVar. In Valore digitare ProductsDB.
Nota
In questa procedura dettagliata è possibile presupporre che il database a cui si fa riferimento si trovi sempre nello stesso server del database a cui si aggiunge il riferimento. Non è pertanto necessario definire variabili per il nome del server.
In Aggiornamento oggetti schema e script selezionare la casella di controllo Aggiorna le definizioni oggetto dello schema e gli script esistenti per utilizzare le variabili di riferimento al database, quindi fare clic su OK.
Nella finestra di dialogo Anteprima modifiche fare clic su INNER JOIN per visualizzare i dettagli della modifica, quindi fare clic su Applica.
La definizione della visualizzazione verrà aggiornata in base all'esempio seguente:
-- ============================================= -- Create ItemDetailsView view -- ============================================= CREATE VIEW [dbo].[ItemDetailsView] AS SELECT O.[POID], O.[ItemID], P.[ProductName], P.[UnitPrice], O.[Quantity], O.[Price], O.[Notes] FROM [dbo].[OrderItems] AS O INNER JOIN [$(ReferencedDBVar)].[dbo].[Products] AS P ON P.[ProductID] = O.[ProductID]
Il nome della variabile specificato identifica la tabella a cui si fa riferimento e i sei errori sono stati risolti. A questo punto, compilare e distribuire il progetto di database.
Per configurare, compilare e distribuire il 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.
Importante Per completare correttamente questa procedura dettagliata, è necessario distribuire il database nello stesso server in cui è stato distribuito ProductsDB nella procedura dettagliata indicata come prerequisito. Se si desidera distribuire in un server diverso, è necessario definire una variabile.
In Seleziona o immetti nome di database digitare OrdersDB e fare clic su OK.
La casella Connessione di destinazione contiene la stringa di connessione, mentre la casella Nome database di destinazione contiene OrdersDB.
Accettare i valori predefiniti per le altre opzioni, aprire il menu File e quindi scegliere Salva elementi selezionati.
Le impostazioni di distribuzione del progetto verranno salvate.
Scegliere Compila soluzione dal menu Compila.
Il progetto di database verrà compilato. Se la compilazione viene eseguita correttamente, sulla barra di stato verrà visualizzato il messaggio Compilazione completata e i risultati della compilazione verranno visualizzati nella finestra Output.
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".
Passaggi successivi
A questo punto, sarebbe opportuno sottoporre il progetto di database al controllo della versione per condividerlo con il team.
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