Come impostare VS2008 per scegliere l’istanza predefinita di SQL Server fra le disponibili

Recentemente ho installato la beta2 di Visual Studio 2010 su una macchina dove era già installato Visual Studio 2008.

I due ambienti di sviluppo possono coesistere senza problemi, tuttavia bisogna tenere presente che SQL Server Express 2005 -installato automaticamente da VS2008- viene sostituito dal setup di VS2010 con SQL Server Express 2008.

A prima vista questo potrebbe essere considerato un non-problema, considerato che anche un progetto creato con la versione 2008 di Visual Studio può aprire un DB di SQL Server 2008. Tuttavia, l’IDE di VS2008 –e in particolare la sua finestra “Esplora Server”– non sono in grado di aprire database di SQL Server 2008, riportando uno dei due errori di seguito elencati:

image

 image

Per essere precisi, il primo messaggio di errore compare aprendo un comune database di formato SQL Server 2008, mentre il secondo viene mostrato quando si tenta di aprire il database creato automaticamente dal programma WSA (Web Site Administration tool) di ASP.NET, che serve ad impostare i criteri di protezione, gli account utente ed altre impostazioni del sito ASP.NET che state creando.

Per ovviare al problema e per poter continuare a tenere le mie presentazioni in pubblico su ASP.NET con la versione 2005 di Visual Studio 2005 (incluse le funzionalità integrate di accesso ai dati), ho installato nuovamente SQL Server 2005 chiamandolo SQLSERVER2005 per distinguerlo dalla versione 2008 già installata (per default con il nome di SQLEXPRESS), ritrovandomi così due servizi distinti:

image

Ora, da una parte il problema è risolto ricordandosi di specificare il corretto motore di SQL Server quando si crea un database SQL Server dall’interno della finestra “Esplora Server” di Visual Studio 2005:

image

Dall’altra parte però il problema persiste quando creo un database dal menu contestuale “Aggiungi nuovo elemento” sul progetto (perché non fa comparire la finestra di cui sopra, e usa la connessione a SQLEXPRESS di default).

Ma soprattutto il problema si presenta quando lancio il WSA che menzionavo prima, il quale pure usa la stringa di connessione “LocalSqlServer” definita per default a livello di macchina.

Il primo di questi due problemi si risolve modificando le seguenti due voci all’interno del menu “Strumenti – Opzioni – Strumenti di database” di Visual Studio 2005, facendo così puntare l’istanza corretta del database:

  1. Connessioni dati
  2. Database di convalida

L’altro problema, relativo al WSA, si può risolvere in due modi:

  1. Sovrascrivere, in ogni applicativo WSA dove si vogliano mantenere le connessioni sull’istanza SQL Server 2005, la stringa di connessione “LocalSqlServer” con una che punti a server corretto, all’interno del file WEB.CONFIG; nel mio caso l’ho modificata come segue:
    <connectionStrings>
      <remove name="LocalSqlServer"/>
      <add
        name="LocalSqlServer"
        connectionString="data source=.\SQLEXPRESSEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
        providerName="System.Data.SqlClient"/>
    </connectionStrings>

  2. L’altro metodo è più radicale e bisogna tenere in considerazione che tale impostazione influenza anche Visual Studio 2010; esso consiste nel modificare la stringa di connessione “LocalSqlServer” accessibile dal pannello di amministrazione di IIS, facendola puntare nel mio caso all’istanza di SQLSERVER2005:
    image
    image