Empty database ?
I think as long as its related to testing a report, the most you can verify from a fresh database, that does not have any data in it, is whether the fields that should display zeros (0.00) or 'null' or 'Not Available' when there is no data in the corresponding table field, are doing so or not.
Other than that, a report is meaningless without data in it.
When testing reports, it's more important to start with a data base that is in a known state. If you do not know that inital state of the database it is more difficult to determine if the report output is.
An empty database is useful to check how the reports engine behaves when there is no data. Sometimes developers assume that a data base query will return data.
Running reports after a database has been populated by testers is useful to ensure the data created by the application is in a valid format. However if the data is created as the result of other tests the actual results may not match the expected results if tests fail or are not run.
A database pre-filled with data is also useful to ensure that the reports engine works with existing data.
When the data to appear on the report consists of data input by the tester, the tester can ensure that each field that needs to be populated on the report has corresponding data in the database, and that this data is designed to exercise each field in the report.
When you use production data, besides the inability to test empty reports/fields, the tester often has to "hunt and peck" to find production data that fulfills the needs of the test. It is actually more efficient to be able to combine conditions into as few tests as possible; when you use production data, you may have to use many records in order to fulfill conditions, or you may need to go in and modify the production data to "fit" the pre-conditions of the test. Depending on the relational nature of the databases, this can be very complex and error-prone.