Tijdens het experimenteren met ASP.Net 2.0 WebParts liep ik tegen onderstaande foutmelding aan:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
De oorzaak hiervan is dat ASP.Net een Sql Server Express instantie genaamd aspnetdb.msf wil aanmaken binnen de App_Data map van de betreffende website. Het enige probleem is dat op mijn machine geen SQL Server Express is geinstalleerd maar SQL Server 2008 Developer Edition. De betreffende actie mislukt dus met als gevolg de eerder genoemde foutmelding.
De oplossing voor het probleem is het laten aanmaken van de betreffende database in SQL Server en een web.config aanpassing van de betreffende web applicatie. Microsoft heeft hier bij het .NET Framework een tool voor meegeleverd genaamd ASP.NET SQL Server Registration Tool (Aspnet_regsql.exe). Het betreffende bestand staat in de map "[drive:]\%windir%\Microsoft.NET\Framework\v2.0.50727".
Als je het bestand start zonder aanvullende parameters dan wordt er automatisch een wizard gestart.
De wizard kan gebruikt worden voor het toevoegen en verwijderen van benodigde services.
De wizard dient uitgevoerd te worden met een account dat voldoende rechten heeft op SQL Server om de database aan te maken of te verwijderen.
We kunnen in het overzichtscherm zien dat er een database wordt aangemaakt met als naam "aspnetdb".
Even later is de database aangemaakt met daarin de ondersteuning voor alle ASP.net application services.
Indien je maar een enkele application services (Membership, Role Manager, Profile, Web Parts Personalization en/of Web Events) nodig hebt dan kan je beter de command line parameters gebruiken. Zie het "ASP.NET SQL Server Registration Tool" artikel van MSDN voor meer informatie hierover.
Nu de database is aangemaakt dien ik de betreffende web applicatie nog dusdanig te configureren dat deze gebruik gaat maken van de SQL Server versie van de database. Dit doen we door in het connectionSettings gedeelte een aanpassing door te voeren. Als eerste dienen we de bestaande verwijzing naar het gebruik van SQL Server Express (de lokale mdf) te overrulen. Dit doen we door een remove statement toe te voegen. Daarna brengen we een regel aan voor de aanroep naar de betreffende SQL Server instantie waar de aspnetdb database draait. De aanpassingen zijn als volgt:
<connectionStrings>
<!--
ASP.net application services laten verwijzen naar de centrale
SQL Server instantie i.p.v. een lokale SQL Server Express
database.
-->
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Na het aanbrengen van deze wijzigingen treed de fout die ik eerst zag niet meer op en kan ik verder gaan met mijn expirementen.
Reacties