I am reengineering a crude data mart that was created in SQL Server 7. (It consists of tables based directly on mainframe extracts, with no data cleaning or conforming, etc.) The new system is starting to take shape in SQL Sever 2008 R2, but I am under pressure to make like-for-like data available immediately, which means the complete data modelling and cube building will have to wait. My problem is: How should I expose the data to the users?
Currently, people are using Access to link to views on the tables in the old (SQL Server 7) database. This creates a recurring PITA problem with the scheduled database refreshes: If the extracts are late coming out of the mainframe, people have already connected to the database by the time the ETL tries to run, and it fails because of table locks. I suppose the same situation will arise in the new data mart if I again grant user access to views on the tables -- unless I modify the ETL to allow new versions of the tables to be built while the clients are still pointing to the old ones.
Should I simply deny direct access to these tables, and instead provide stored procedures for use by Access and Excel clients? (I haven't tried this before, and I'm worried about provoking a backlash if it doesn't go smoothly).
Whatever I do, it may be necessary to create a messaging solution that informs users of which data they are using (i.e. last week versus this week) while the tables are getting refreshed (or the extracts are late). Any tips?