Archive for the 'Sql' Category

Microsoft SQL Server Management Express

Potrei sbagliarmi, lo spero, forse quanto sto per dire dipende unicamente dalla mia “inettitudine” o dalla mia capacità poco sviluppata di utilizzare questo strumento (anche se sono ormai più di 3 anni che ci lavoro). Avete mai provato a:

  1. Creare un database su SQL Server Standard o Enteprise.
  2. Successivamente, con SQL Management Studio Express creare una copia di backup del database per ripristinarlo su un’altra macchina.
  3. Cercare di ripristinare il backup effettuato sulla nuova macchina (utilizzando sempre SQL Management Studio Express) ed ottenete un messaggio di errore che tra le righe riporta Accesso Negato.

Ci ho pensato parecchio, un problema cosi da cosa può dipendere? Allora ho provato a seguire una strada diversa. Mi sono collegato direttamente alla macchina server che monta motore di database ed SQL Management Studio, da qui creo il backup. Successivamente, sulla macchina dove voglio ripristinare il backup, eseguo l’operazione senza alcun problema, questa volta utilizzando SQL Management Express.

Ora mi chiedo, ci sono differenze? Sicuramente ma avrò perso qualche passaggio, un backup viene visto in maniera molto differente se effettuato da una versione Express ad una Studio! Questa è una piccola nota, nel caso vi dovesse accedere quanto è successo a me, potete sempre tentare questa strada, attualmente sto analizzando il problema per capire “dove sbaglio” (perchè sicuramente dipende, come dicevo prima, dalla mia inettitudine :D ).

Aggiornare lo schema di una vista con sp_refreshview.

Spero possa essere utile anche a voi quanto sto per scrivere, per me in primis vuole essere un appunto da tenere sempre a portata di mano nei momenti in cui la mente mi abbandona. Vi è capitato di creare e subito dopo modificare viste (view) in SQL Server e di trovarvi in questa situazione: creo una vista che prende dati da un’altro database presente nello stesso server:

CREATE VIEW MyView AS
	SELECT Column1,Column2 FROM Database.dbo.Table

Successivamente creo un’altra vista quasi identica che per determinati motivi si “appoggia” direttamente alla prima facendo una SELECT * (START premettendo che è sbagliato eseguire una select in questo modo in quanto a risentirne di più sono proprio le performance del server SQL).

CREATE VIEW MyView2 AS
	SELECT * FROM MyView

Dopo un pò di tempo torno sulla prima view e ne modifico le colonne, ne aggiungo di nuove. Cosa succede? Che MyView2 interrogata, mi risponde riportando solo le vecchie colonne e non le nuove. Questo succede perchè lo schema della vista non è stato aggiornato correttamente, per ovviare a questa situazione basta un semplice comando:

EXEC sp_refreshview @view = N'MyView2'

Successivamente, la vista contiene l’elenco delle colonne aggiornate!