Install community to separate database on existing EPiServer CMS 7 site

Nikolay Moskalev
Member since: 2010
 

I have a site based EPiServer CMS 7. I want to install Community on my site and store community's entities to separate DB. I use EPiServer Deploy Center for Community and install new SQL database, next update existing site (no database) and finally I update connectionString.config and set path to just isntalled DB to EPiServerCommon connection. But despite of this after rebuilding the site I have an exception that some community's stored procedures aren't found. In previous version of EPiServer (ver. 6r2) I used separate db for community and it worked.

Could you help me please? Perhaps somebody faced with this issue.

Thanks an advance.

#66084 Feb 19, 2013 19:59
  • fredrik.haglund
    Member since: 2007
     

    Do you have a call stack of the exception?

    #66089 Feb 19, 2013 23:11
  • Nikolay Moskalev
    Member since: 2010
     
    InvalidOperationException: The stored procedure 'spEPiServerCommunityDocumentArchiveAddDocumentArchive' doesn't exist.]
       System.Data.SqlClient.SqlCommand.DeriveParameters() +3876
       System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(SqlCommand command) +237
       EPiServer.Data.Providers.ParameterDiscovery.SqlParameterDiscoverer.DiscoverParameters(DbCommand command) +204
       EPiServer.Data.Providers.SqlDatabaseHandler.CreateParametersAndSetValues(DbCommand command, Object[] parameterValues) +376
       EPiServer.Data.Providers.SqlDatabaseHandler.CreateCommand(String commandText, CommandType commandType, Object[] parameterValues) +98
       EPiServer.Community.DocumentArchive.Data.<>c__DisplayClass16.<AddDocumentArchive>b__15() +406
       EPiServer.Data.Providers.<>c__DisplayClass4.<ExecuteTransaction>b__3() +15
       EPiServer.Data.Providers.<>c__DisplayClass7`1.<ExecuteTransaction>b__6() +242
       EPiServer.Data.Providers.SqlDeadlockRetryPolicy.Execute(Boolean isInTransaction, Func`1 method) +114
       EPiServer.Community.DocumentArchive.Data.DocumentArchiveFactory.AddDocumentArchive(DocumentArchive archive) +173
       EPiServer.Community.DocumentArchive.DocumentArchiveHandler.AddDocumentArchive(DocumentArchive archive) +85
       EPiServer.Community.DocumentArchive.DocumentArchiveModule.CreateRequiredModuleEntries() +317
       EPiServer.Framework.Initialization.ModuleNode.Execute(Action a, String key) +64
       EPiServer.Framework.Initialization.InitializationEngine.InitializeModules() +736
       EPiServer.Framework.Initialization.InitializationEngine.Initialize(HostType hostType) +202
       EPiServer.Framework.Initialization.InitializationModule.Initialize(HostType hostType) +323
       EPiServer.Framework.Initialization.InitializationModule.FrameworkInitialization(HostType hostType) +75
       EPiServer.Global..ctor() +103
       ASP.global_asax..ctor() +9
    
     
    It looks like Community takes in a data not from own DB but from EPiServe DB, that doesn't have any community's stored rocedures
     
    Connection string:

    <add name="EPiServerDB" connectionString="Data Source=.;Initial Catalog=dbMyEPiServerSite;Integrated Security=False;User ID=dbUserMyEPiServerSite;Password=pa$$w0rd;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
    <add name="EPiServerCommon" connectionString="Data Source=.;Initial Catalog=dbEPiServerCommunity;Integrated Security=False;User ID=dbUserEPiServerCommunity;Password=pa$$w0rd;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

    Perhaps some settings should be set elsewhere.What do you think?

    #66091 Feb 20, 2013 6:24
  • Nikolay Moskalev
    Member since: 2010
     

    Hi guys,

    do you have some ideas?

    #66264 Feb 26, 2013 9:15
  • fredrik.haglund
    Member since: 2007
     

    Hi!

    I looked into this a little bit more and in EPiServer Community 7 the data layer is refactored to be a part of the EPiServer.Data module (containing Dynamic Data Store) that also is shared with EPiServer CMS.

    I can see when reflecting that it is using a mechanism to resolve the database connection string that fallbacks to a hard coded connection string "EPiServerDB" if there is no <episerver.dataStore> section.

    Using siteDataSettings should make it possible to get it to use your database but I'm not sure how it will affect EPiServer CMS and DDS.

    Please, take some time and try it out and share with us what you find!

    #66305 Feb 26, 2013 16:22
  • Nikolay Moskalev
    Member since: 2010
     

    Thanks for the advice Fredrik,

    I have researched episerver.dataStore section and found answer for my question. In EpiServer 7 you can't use separate DB for communuty entities. In this section you can set name of connection string for specific site (for example if you have connection name that is different from EPIServerDB) and this connection will be used in all EpIServer modules (like Community, CMS and so on). In new version of EpIServer access to DB is based on IDatabaseHandler. Community also uses it.

    #66428 Feb 28, 2013 12:49