====== Reporting/Database Queries ======
For now this will only consist of useful queries. Maybe in the future I'll try to setup a reporting web page for the database.
==== All non-bes users in a store: ====
select displayName,bes,size from exchange_info where server='cuit-exchange1' AND mdb='Mailbox Store 10 (CUIT-EXCHANGE1)' AND bes IS NULL order by size;
==== Count of bes users in a store, and how much mail is in the store: ====
select count(bes) as "BES Users",server,sg,mdb,sum(size) as space, count(size) as mailboxes from exchange_info where server='cuit-exchange1' AND mdb='Mailbox Store 10 (CUIT-EXCHANGE1)';
mysql> select count(bes) as "BES Users",server,sg,mdb,sum(size) as space, count(size) as mailboxes from exchange_info where server='cuit-exchange1' AND mdb='Mailbox Store 10 (CUIT-EXCHANGE1)';
+-----------+----------------+---------------------+-----------------------------------+----------+-----------+
| BES Users | server | sg | mdb | space | mailboxes |
+-----------+----------------+---------------------+-----------------------------------+----------+-----------+
| 18 | cuit-exchange1 | Third Storage Group | Mailbox Store 10 (CUIT-EXCHANGE1) | 47687618 | 79 |
+-----------+----------------+---------------------+-----------------------------------+----------+-----------+
1 row in set (0.03 sec)
==== Count of bes users in a store, and how much mail is in only their boxes: ====
select count(bes) as "BES Users",server,sg,mdb,sum(size) as space, count(size) as mailboxes from exchange_info where bes='1' AND server='cuit-exchange1' AND mdb='Mailbox Store 10 (CUIT-EXCHANGE1)';
mysql> select count(bes) as "BES Users",server,sg,mdb,sum(size) as space, count(size) as mailboxes from exchange_info where bes='1' AND server='cuit-exchange1' AND mdb='Mailbox Store 10 (CUIT-EXCHANGE1)';
+-----------+----------------+---------------------+-----------------------------------+----------+-----------+
| BES Users | server | sg | mdb | space | mailboxes |
+-----------+----------------+---------------------+-----------------------------------+----------+-----------+
| 18 | cuit-exchange1 | Third Storage Group | Mailbox Store 10 (CUIT-EXCHANGE1) | 15374889 | 18 |
+-----------+----------------+---------------------+-----------------------------------+----------+-----------+
1 row in set (0.04 sec)
mysql> select mdb as "MailStore",sum(size) as "Total Data (KB)",count(bes) as "BES Users",count(displayName) as Mailboxes from exchange_info where server='cuit-exchange1' AND mdb='Mailbox Store 10 (CUIT-EXCHANGE1)' order by displayName;
+-----------------------------------+-----------------+-----------+-----------+
| MailStore | Total Data (KB) | BES Users | Mailboxes |
+-----------------------------------+-----------------+-----------+-----------+
| Mailbox Store 10 (CUIT-EXCHANGE1) | 34096736 | 18 | 61 |
+-----------------------------------+-----------------+-----------+-----------+
1 row in set (0.04 sec)
==== Select from an OU, order by disabled, then by size ascending: ====
select displayName,disabled,alpha_id,size,ou,server,mdb from exchange_info where ou LIKE '%Columbia%ollege%' order by disabled,size ASC;
==== List sizes of all MDBs, sorted by size: ====
select sum(size) as "Size in bytes",mdb from exchange_info group by mdb order by sum(size);
or
select sum(size) as "Size in bytes",mdb from exchange_info group by mdb order by sum(size+0);
==== List of users in an MDB, omitting "System" mailboxes: ====
select displayName as Name,alpha_id as ID,size as "Mailbox Size in KB",bes as "BES User",disabled from exchange_info where mdb='Mailbox Store 10 (CUIT-EXCHANGE1)' AND displayName NOT LIKE '%System%';
==== A decent OU search for distribution to a group: ====
select displayName as Name,alpha_samid as ID,size as "Mailbox Size in KB",server as Server,ou as OU,disabled as Disabled from exchange_info where ou LIKE '%Earth Institute' ORDER BY disabled,size;
==== After adding dates to the DB: ====
select displayName as Name,alpha_samid as ID,size as "Mailbox Size in KB",lastLogon as "Last AD Logon",lastExchangeLogon as "Last Mailbox Logon",ou as OU,disabled as Disabled from exchange_info where ou LIKE '%Earth Institute' ORDER BY disabled,lastExchangeLogon;
==== Some Quotas ====
select displayName as Name,alpha_samid as ID,size as "Mailbox Size (KB)",bes as "BES User",disabled as Disabled,lastExchangeLogon as "Last Mailbox logon",lastLogon as "Last AD Logon",mDBStorageQuota,mDBOverQuotaLimit from exchange_info where mDBStorageQuota > '0' AND displayName NOT LIKE '%System%' order by disabled,bes,OU,displayName;
==== Quotas set with no Prohibit Send ====
select displayName as Name,alpha_samid as ID,size as "Mailbox Size (KB)",bes as "BES User",disabled as Disabled,mDBStorageQuota,mDBOverQuotaLimit from exchange_info where mDBStorageQuota > '0' AND mDBOverQuotaLimit='0' AND displayName NOT LIKE '%System%' order by disabled,bes,OU,displayName;
==== All users from a store if not disabled, except also disabled if in a particular OU, and not bes users ====
select displayName,alpha_samid,size,disabled,bes,OU,server,mdb from exchange_info where (disabled='1' AND OU LIKE '%Medical Center%' AND mdb LIKE '%MS6%') OR displayName NOT LIKE '%System%' AND server LIKE '%exchange3%' AND mdb LIKE '%MS6%' and bes='0' AND disabled='0' ORDER BY disabled ASC,displayName;
==== Similar to above, but the alternate group, users in the mdb, not in that OU, but either disabled, or a bes user ====
select displayName,alpha_samid,size,disabled,bes,OU,mdb,lastExchangeLogon from exchange_info where NOT ((disabled='1' AND OU LIKE '%Medical Center%' AND mdb LIKE '%MS6%' AND bes='0') OR displayName NOT LIKE '%System%' AND server LIKE '%exchange3%' AND mdb LIKE '%MS6%' and bes='0' AND disabled='0') AND mdb LIKE '%MS6%' ORDER BY disabled,size;
==== Export to CSV file ====
select displayName,size,ou from exchange_info INTO OUTFILE '/Users/ben/tmp/test.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ;
==== Report for a particular OU into a CSV file ====
select displayName as "Mailbox Name",alpha_samid as "ID",disabled as Disabled,bes as "Blackberry User",size "Mailbox Size (KB)",lastLogon as "Last AD Logon", lastExchangeLogon as "Last Mailbox Logon",OU from exchange_info where OU LIKE '%Columbia%College%' AND displayName NOT LIKE '%System%' ORDER BY disabled DESC,size INTO OUTFILE '/Users/ben/tmp/test.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';