@@ -350,6 +350,11 @@ void QgsMssqlProvider::loadMetadata()
350350 mSRId = 0 ;
351351 mWkbType = QGis::WKBUnknown;
352352
353+ if ( !mDatabase .isOpen () )
354+ {
355+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
356+ }
357+
353358 QSqlQuery query = QSqlQuery ( mDatabase );
354359 query.setForwardOnly ( true );
355360 if ( !query.exec ( QString ( " select f_geometry_column, coord_dimension, srid, geometry_type from geometry_columns where f_table_schema = '%1' and f_table_name = '%2'" ).arg ( mSchemaName , mTableName ) ) )
@@ -368,7 +373,12 @@ void QgsMssqlProvider::loadFields()
368373{
369374 mAttributeFields .clear ();
370375 mDefaultValues .clear ();
376+
371377 // get field spec
378+ if ( !mDatabase .isOpen () )
379+ {
380+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
381+ }
372382 QSqlQuery query = QSqlQuery ( mDatabase );
373383 query.setForwardOnly ( true );
374384 if ( !query.exec ( QString ( " exec sp_columns @table_name = N'%1', @table_owner = '%2'" ).arg ( mTableName , mSchemaName ) ) )
@@ -532,6 +542,10 @@ QVariant QgsMssqlProvider::minimumValue( int index )
532542 sql += QString ( " where (%1)" ).arg ( mSqlWhereClause );
533543 }
534544
545+ if ( !mDatabase .isOpen () )
546+ {
547+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
548+ }
535549 QSqlQuery query = QSqlQuery ( mDatabase );
536550 query.setForwardOnly ( true );
537551
@@ -563,6 +577,10 @@ QVariant QgsMssqlProvider::maximumValue( int index )
563577 sql += QString ( " where (%1)" ).arg ( mSqlWhereClause );
564578 }
565579
580+ if ( !mDatabase .isOpen () )
581+ {
582+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
583+ }
566584 QSqlQuery query = QSqlQuery ( mDatabase );
567585 query.setForwardOnly ( true );
568586
@@ -603,6 +621,10 @@ void QgsMssqlProvider::uniqueValues( int index, QList<QVariant> &uniqueValues, i
603621 sql += QString ( " where (%1)" ).arg ( mSqlWhereClause );
604622 }
605623
624+ if ( !mDatabase .isOpen () )
625+ {
626+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
627+ }
606628 QSqlQuery query = QSqlQuery ( mDatabase );
607629 query.setForwardOnly ( true );
608630
@@ -631,6 +653,10 @@ void QgsMssqlProvider::UpdateStatistics( bool estimate )
631653 // get features to calculate the statistics
632654 QString statement;
633655
656+ if ( !mDatabase .isOpen () )
657+ {
658+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
659+ }
634660 QSqlQuery query = QSqlQuery ( mDatabase );
635661 query.setForwardOnly ( true );
636662
@@ -758,6 +784,10 @@ long QgsMssqlProvider::featureCount() const
758784
759785 // If there is no subset set we can get the count from the system tables.
760786 // Which is faster then doing select count(*)
787+ if ( !mDatabase .isOpen () )
788+ {
789+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
790+ }
761791 QSqlQuery query = QSqlQuery ( mDatabase );
762792 query.setForwardOnly ( true );
763793
@@ -1419,6 +1449,10 @@ QgsCoordinateReferenceSystem QgsMssqlProvider::crs()
14191449 return mCrs ;
14201450
14211451 // try to load crs from the database tables as a fallback
1452+ if ( !mDatabase .isOpen () )
1453+ {
1454+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
1455+ }
14221456 QSqlQuery query = QSqlQuery ( mDatabase );
14231457 query.setForwardOnly ( true );
14241458 bool execOk = query.exec ( QString ( " select srtext from spatial_ref_sys where srid = %1" ).arg ( QString::number ( mSRId ) ) );
@@ -1472,6 +1506,10 @@ bool QgsMssqlProvider::setSubsetString( const QString& theSQL, bool )
14721506 sql += QString ( " where %1" ).arg ( mSqlWhereClause );
14731507 }
14741508
1509+ if ( !mDatabase .isOpen () )
1510+ {
1511+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
1512+ }
14751513 QSqlQuery query = QSqlQuery ( mDatabase );
14761514 query.setForwardOnly ( true );
14771515 if ( !query.exec ( sql ) )
0 commit comments