title: Configure AdoJobStores of Quartz with LocalDb
body: <p>I've been using <a href="https://www.nuget.org/packages/Quartz/" rel="nofollow">Quartz</a> AdoJobStores with SQL Server for a long time without any problem. Recently I changed the SQL Server database to LocalDB database and received the following exception:</p>
  
  <pre><code>Quartz.JobPersistenceException: Couldn't obtain job names: Invalid object name 'QRTZ_JOB_DETAILS'.
  System.Data.SqlClient.SqlException: Invalid object name 'QRTZ_JOB_DETAILS'.
  at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
  at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
  at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
  at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj, Boolean&amp; dataReady)
  at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
  at System.Data.SqlClient.SqlDataReader.get_MetaData()
  at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
  at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task&amp; task, Boolean asyncWrite, SqlDataReader ds)
  at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task&amp; task, Boolean asyncWrite)
  at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
  at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
  at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
  at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
  at Quartz.Impl.AdoJobStore.StdAdoDelegate.SelectJobsInGroup(ConnectionAndTransactionHolder conn, GroupMatcher`1 matcher) 
  at Quartz.Impl.AdoJobStore.JobStoreSupport.GetJobNames(ConnectionAndTransactionHolder conn, GroupMatcher`1 matcher)
  </code></pre>
  
  <p>This is the Quartz configuration section on my App.config:</p>
  
  <pre><code>&lt;quartz&gt;
  &lt;add key="quartz.scheduler.instanceName" value="RemoteServer" /&gt;
  &lt;add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /&gt;
  &lt;add key="quartz.threadPool.threadCount" value="10" /&gt;
  &lt;add key="quartz.threadPool.threadPriority" value="Normal" /&gt;
  &lt;add key="quartz.scheduler.exporter.type" value="Quartz.Simpl.RemotingSchedulerExporter, Quartz" /&gt;
  &lt;add key="quartz.scheduler.exporter.port" value="9999" /&gt;
  &lt;add key="quartz.scheduler.exporter.bindName" value="QuartzScheduler" /&gt;
  &lt;add key="quartz.scheduler.exporter.channelType" value="tcp" /&gt;
  &lt;add key="quartz.scheduler.exporter.channelName" value="httpQuartz" /&gt;
  &lt;add key="quartz.scheduler.instanceId" value="instance_one" /&gt;
  &lt;add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" /&gt;
  &lt;add key="quartz.jobStore.useProperties" value="true" /&gt;
  &lt;add key="quartz.jobStore.dataSource" value="default" /&gt;
  &lt;add key="quartz.jobStore.tablePrefix" value="QRTZ_" /&gt;
  &lt;add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" /&gt;
  &lt;add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" /&gt;
  &lt;add key="quartz.dataSource.default.connectionString" value="Data Source=(localdb)\v11.0; Initial Catalog=Scheduling;MultipleActiveResultSets=true;Integrated Security=SSPI" /&gt;
  &lt;add key="quartz.dataSource.default.provider" value="SqlServer-20" /&gt;
  &lt;add key="quartz.jobStore.misfireThreshold" value="60000" /&gt;
  </code></pre>
  
  <p></p>
  
  <p>The database exists, I can connect to it using Navicat but is empty without any table. I thought that maybe I could be the database provider and reading the page <a href="http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/job-stores.html" rel="nofollow">Quartz.NET - Lesson 9: JobStores</a> I found that these are database providers available:</p>
  
  <blockquote>
    <ul>
    <li>SqlServer-20 - SQL Server driver for .NET Framework 2.0</li>
    <li>OracleODP-20 - Oracle's Oracle Driver</li>
    <li>OracleODPManaged-1123-40 Oracle's managed driver for Oracle 11</li>
    <li>OracleODPManaged-1211-40 Oracle's managed driver for Oracle 12</li>
    <li>MySql-50 - MySQL Connector/.NET v. 5.0 (.NET 2.0)</li>
    <li>MySql-51 - MySQL Connector/:NET v. 5.1 (.NET 2.0)</li>
    <li>MySql-65 - MySQL Connector/:NET v. 6.5 (.NET 2.0)</li>
    <li>SQLite-10 - SQLite ADO.NET 2.0 Provider v. 1.0.56 (.NET 2.0)</li>
    <li>Firebird-201 - Firebird ADO.NET 2.0 Provider v. 2.0.1 (.NET 2.0)</li>
    <li>Firebird-210 - Firebird ADO.NET 2.0 Provider v. 2.1.0 (.NET 2.0)</li>
    <li>Npgsql-20 - PostgreSQL Npgsql</li>
    </ul>
  </blockquote>
  
  <p><strong>QUESTIONS</strong></p>
  
  <ol>
  <li>I can use LocalDB database with SQLServerDelegate?</li>
  <li>The problem is given because Quartz do not have a provider for LocalDB?</li>
  </ol>