/// <summary> /// Gets the properties of the database. /// These properties include database status, owner, create date, file properties, and more. /// </summary> /// <returns> /// The properties of the database. /// </returns> public SqlDatabaseProperties GetDatabaseProperties() { string databaseStatus; switch (dmoDatabase.GetStatus()) { case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_EmergencyMode: databaseStatus = SR.GetString("SqlDatabase_Status_EmergencyMode"); break; case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_Inaccessible: databaseStatus = SR.GetString("SqlDatabase_Status_Inaccessible"); break; case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_Loading: databaseStatus = SR.GetString("SqlDatabase_Status_Loading"); break; case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_Normal: databaseStatus = SR.GetString("SqlDatabase_Status_Normal"); break; case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_Offline: databaseStatus = SR.GetString("SqlDatabase_Status_Offline"); break; case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_Recovering: databaseStatus = SR.GetString("SqlDatabase_Status_Recovering"); break; case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_Standby: databaseStatus = SR.GetString("SqlDatabase_Status_Standby"); break; case NativeMethods.SQLDMO_DBSTATUS_TYPE.SQLDMODBStat_Suspect: databaseStatus = SR.GetString("SqlDatabase_Status_Suspect"); break; default: databaseStatus = SR.GetString("SqlDatabase_Status_Unknown"); break; } NativeMethods.IDBFile dataFile = dmoDatabase.GetFileGroups().Item(1).GetDBFiles().Item(1); NativeMethods.ILogFile logFile = dmoDatabase.GetTransactionLog().GetLogFiles().Item(1); SqlFileProperties dataFileProps = new SqlFileProperties((dataFile.GetFileGrowthType() == NativeMethods.SQLDMO_GROWTH_TYPE.SQLDMOGrowth_MB) ? SqlFileGrowthType.MB : SqlFileGrowthType.Percent, dataFile.GetFileGrowth(), dataFile.GetMaximumSize()); SqlFileProperties logFileProps = new SqlFileProperties((logFile.GetFileGrowthType() == NativeMethods.SQLDMO_GROWTH_TYPE.SQLDMOGrowth_MB) ? SqlFileGrowthType.MB : SqlFileGrowthType.Percent, logFile.GetFileGrowth(), logFile.GetMaximumSize()); SqlDatabaseProperties props = new SqlDatabaseProperties(dmoDatabase.GetName(), databaseStatus, dmoDatabase.GetOwner(), DateTime.Parse(dmoDatabase.GetCreateDate()), dmoDatabase.GetSize(), dmoDatabase.GetSpaceAvailable() / 1024F, dmoDatabase.GetUsers().GetCount(), dataFileProps, logFileProps); return(props); }