Hi,
At the moment you are opening a separate connection for each individual
user, and holding it open *even* when the connection is not being used.
Additionally, the connection is not being released until the session times
out. For a large application, with connection pooling, you should not need
more than 20-30 connections, however your application is going to result in
hundreds of connections. SQL Server (nor any other DBMS) won't scale to
hundreds, or thousands of concurrent connections.
What I suggest you do is write a little function that returns an open
connection, and stick that into every page you have (via find-n-replace).
Then all you need to do is change all references to Session("Con") to this
page level connnection.
I also noticed just now that you are attempting to open, and store an ADO
connection in Application scope! That's just as bad - that means you are
serialising all access to your database through a single connection whenever
you try to use that. I have no idea who wrote this application before, but
that's just about the worst way to write anything (unless you are using that
one connection to keep a connection persistantly in the OLEDB/ODBC pool, but
you shouldn't need to do that on a high-load app anyway). This is a really
good resource on pooling:
http://msdn.microsoft.com/library/de...l/pooling2.asp
Cheers
Ken
"Matt Calhoon" <ma**@community.nospam> wrote in message
news:60**********************************@microsof t.com...
Hi Ken,
thanks for your email.
I mentioned in my post that I inherited the code (from another web
development company), and for time constraints cannot be changed. This
site
(along with 200 others) is being moved to a new webfarm (which has IIS
6.0).
I can't be fixing all the code for each site unless I have nothing to do
for
6 months.
...ok so my question remains; Does IIS 6.0 treat global.asa any different
to
IIS 5.0?
Suggest you tell us what your errors are to troubleshoot your global.asa
problems
The error was "incorrect login for user 'mydatabaseuser'. After I changed
the login to the correct password, the change did not take place unless I
restarted the www service (the next day). So it looks as though the
global.asa file is cached until restart of www.
"Ken Schaefer" wrote:
Why are you opening an ADO connection and storing it in Session scope?
That's a really bad way of developing ASP/ADO based applications.
Seriously - you should instantiate and open the connection on each page,
and
close and dispose of it on each page. This enables your application to
take
advantage of connection pooling. The way you are currently doing it is
really bad - it's not scalable whatsoever.
Suggest you tell us what your errors are to troubleshoot your global.asa
problems (may not have anything to do with global.asa itself - maybe you
have a permissions issue or similar so you need to tweak permissions).
Cheers
Ken
"Matt Calhoon" <ma**@community.nospam> wrote in message
news:2F**********************************@microsof t.com... > Hi there,
>
> How does IIS 6.0 treat the global.asa file? I had the following
> problem;
>
> 1. uploaded a new site to the win3k server
> 2. had incorrect db connection string in Session_OnStart in global.asa
> and
> website caused errors.
> 3. Changed the global.asa file to include the correct details. Saved
> the
> file. Still got the same errors.
>
> I could not resolve this unless restarting the WWW Service on this
> server.
> In IIS 5.0 the global.asa file would reload after resaving it (as the
> timestamp is updated).
>
> I even waited the next day before restarting the service because I
> though
> Session_OnStart expires after my session ends...but the error was still
> there
> in the morning.
>
> Hopefully someone will make sense of it for me. Here is the code (I
> inherited) in the global.asa
>
>
> Sub Application_OnStart
> Application("DB.ConnectionString") = ""
> Application("MaxLoginAttempts") = 5
> Set Application("Con") = Server.CreateObject("ADODB.Connection")
> Session("Test") = Now()
> End Sub
>
>
> Sub Session_OnStart
>
>
>
> Application("DB_ConnectionString") = "Provider=SQLOLEDB; Data
> Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
> Password=mypassword"
>
> 'changed db connection application var to SQL server
>
> Session("LoginAttempts") = 0
>
> Session("XAN_ConnectionString") = Application("DB_ConnectionString")
> Session("XAN_adminConnectionString") =
> Application("DB_ConnectionString")
>
> Session("XAN_ConnectionTimeout") = 15
> Session("XAN_CommandTimeout") = 30
> Session("XAN_CursorLocation") = 3
>
> Set Session("Con") = Server.CreateObject("ADODB.Connection")
> Session("Con").ConnectionTimeout = Session("XAN_ConnectionTimeout")
> Session("Con").CommandTimeout = Session("XAN_CommandTimeout")
>
>
> Session("XAN_ConnectionString") = "Provider=SQLOLEDB; Data
> Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
> Password=mypassword"
>
> Response.Buffer = true
>
>
> if Application("Con").State = 0 then
> Application("Con").Open Session("XAN_ConnectionString")
> end if
>
>
> '************************************************* ********************************
> End Sub
>
>