Hi Allen,
We have an A2000 ADP app that runs in our branch offices in 100+
countries. A2000 was a great technology for us, but it is time to move
on. I was really looking forward to A2007, and was glad to see that
ADP continues to be supported.
Then the bad news. The first time I opened a form bound to a simple
stored proc like:
CREATE PROCEDURE dbo.spselTableName
AS
SET NOCOUNT ON
SELECT * FROM dbo.TableName
Where TableName is a simple reference table with less than 10 fields
and a dozen records, It took more than a minute to open! I put a trace
on to see what was happening, and I noticed loads of code like this:
select object_name(sotblfk.id), user_name(sotblfk.uid),
object_name(sotblrk.id), user_name(sotblrk.uid) from sysreferences
srfk,
sysobjects sofk, sysobjects sotblfk, sysobjects sotblrk where
srfk.constid =
sofk.id and srfk.fkeyid = sotblfk.id and srfk.rkeyid = sotblrk.id and
user_name(sofk.uid) = N'dbo' and object_name(sofk.id) =
N'FK_ForeignKeyTableName_TableName_PrimaryKeyFieldName'
It looks like A2007 is interpreting the foreign key relationships in
the SQL database. In our SQL 2000 database (1400 tables, about 3000
relationships) each of these calls generates about 100,000 reads. That
is really, really nasty. It is even worse in SQL 2005. A2000 never
did this, so the same form is lightning fast in A2000, but dead slow in
A2007.
What happened?? IMHO, this problem kills ADP as a usable technology
for corporate development. The most attractive upgrade path for us
would have been A2007, but now we are looking at a complete re-write of
our app. Not so nice.
Any suggestions?
Thanks,
Francois Louw