Re: Problem with the Legacy ASP files and the Sql Server Express
- From: Light <a@xxxxx>
- Date: Sat, 31 Mar 2007 21:39:58 -0400
Hi Norman,
Again, thank.
Sp aside, I thought the 1st post already give you my VBScript.
I tried the Scope_Identify(), but that didn't help. As for the return, Gregory in his reply also said it needed.
If the problem is not with the SQL server Exp, then how come the SQL Sever 2000 works?
That is somethng I can't understand.
Norman Yuan wrote:
From your SP, I do not see your issue is caused by this SP, however, the SP is not well written, IMO..
Firstly, do not use @@Idehtity, use SCOPE_IDENTITY() instead. There are quite some discussion on this topic. In your case, @@Identity may not be guranteed as the identity of the record you just inserted into Compony table, if another inserting occurs at the nearly exactly the same moment, say right after your inserting but before your SELECT @Return_Value is executed.
Secondly, you have already define @return_Value as OUTPUT paramter, there is no need to pass it as return value. in SP, RETURN somevalue is meant for return a value to indicate the SP execution status (succeeded, failed, or partially executed...). Do not confuse it with OUTPUT parameter. In most SP, you can simply leave it as
Create Procedure
As
...
...
RETURN
SQL Server will pass it a default value.
However, these should not affect your VBScript getting unexpected result, as your OP said.
As I mentioned, you need post the VBScript code to show how do you create ADODB.Command and its parameter, which you omitted in your OP. I strongly suspect your VB code is wrong on how you build ADODB.Command, its Parameters and how you get the OUTPUT value from the parameters. Until seeing that part of VB code, I can say more.
"Light" <a@xxxxx> wrote in message news:%23gyj$j7cHHA.4516@xxxxxxxxxxxxxxxxxxxxxxx
Thanks Norman.
Since it is too late for me to move this post to the other NG, I'l keep it here for now.
The new company table is created correctly.
The connection string:
Here is the stored procedure, with some mod to make it short:
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[NewCompany]') and OBJECTPROPERTY(id, N'IsProcedure')=1)
drop procedure [dbo].[NewCompany]
GO
CREATE Procedure NewCompany
(
@varCompanyName varchar (50) = null,
:
:
@RETURN_VALUE int OUTPUT
)
As
INSERT INTO tblCompany(varCompanyName)
values
(@varCompanyName )
SELECT @RETURN_VALUE = @@identity
return @RETURN_VALUE
Norman Yuan wrote:
Although this is not a NG for COM/ADO, but...
Could you post your store procedure and the whole portion of VBScript code for ccreating ADODB.Command and its parameters (you omitted some key part of code in your first post), so that one could not tell how the parameter is created for the ADODB.Command object. Of course this is assume that you do have a connection that can reach SQL Server Express. I do not think your problem is due to difference of SQL Server2000 and SQL Server2005, unless your stored procedure has some thing that only works in SQL Server2000, not SQL Server 2005.
"Light" <a@xxxxx> wrote in message news:%23zjbUZwcHHA.2404@xxxxxxxxxxxxxxxxxxxxxxx
Hi Gregory,
Thanks for the prompt response.
Just for trying, I turned on all the protocols (like tcp/ip) and I couldn't find the configuration for non-local conenctions. Anyway, it doesn't work.
The connection string is fine as I could make connection to the DB and create the new table.
And yes, the stored procedure did do a
return @RETURNVALUE or the SQL Server 2000 version won't work either.
Anyway, I also see another post by David Lozzi (Returning SCOPE_IDENTITY
from SQLDataSource and DetailsView) in this newsgroup yesterday , which
actually is the same problem as mine (except his is using ASP.Net, so my problem is not related to legacy ASP), so this problem is pretty common?
Thanks again..
"Cowboy (Gregory A. Beamer)" <NoSpamMgbworld@xxxxxxxxxxxxxxxxxx> wrote in message news:48E04A5E-FE31-4A58-83AC-A8283AE582AA@xxxxxxxxxxxxxxxx
More likely, you have to set the Express product to accept non-local connections and enable some other connection protocol than shared memory. After that, examine the connection string.
Then, check the stored procedure and make sure it is using RETURN @value, or similar. Otherwise the return value is returning nothing.
Therer is probably more I could do, but would need a deeper dive into the sproc code.
--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA
http://gregorybeamer.spaces.live.com
*********************************************
Think outside the box!
*********************************************
"Light" <a@xxxxx> wrote in message news:exNvKMvcHHA.3644@xxxxxxxxxxxxxxxxxxxxxxx
Hi all,
I posted this question in the sqlserver.newusers group but I am not getting any response there so I am going to try it on the fine folks here:).
I inherited some legacy ASP codes in my office. The original code's backend
is using the SQL Server 2000 and I am testing to use it on the Express
edition.
And I run into the following problem.
One of the pages is using a stored procedure to create a new table and
return the value of the new table ID.
The codes are written in VBScript, briefly, it is as follows:
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection= dbConnection
cmd.CommandText = "NewCompany"
cmd.CommandType = adCmdStoredProc
cmd.Parameters("@varCompanyName") = Request.Form("COMPANYNAME")
:
:
cmd.Parameters("@RETURNVALUE") = 0
Set rsID = cmdCom.Execute
Set rsID = rsID.NextRecordset
ID = cmdCom.Parameters("@RETURNVALUE")
On the SQL Server 2000, the ID is returned correctly, but the Express
doesn't. In fact, it didn't fill in the vat all. For example, If I set the
RETURNVALUE to -5 before the execute,
the new value remains -5. And I could see the table is created correctly
with the proper id. It is just the return value received at the client web
browser is never set.
So my question is, is there any change I need to make for the Express's
stored procedure?
Any suggestion is highly appreciated. This problem is kind of important as a lot of our customers are migrating their SQL servers from 2000 to the 2005.
TIA
- Follow-Ups:
- Re: Problem with the Legacy ASP files and the Sql Server Express
- From: Norman Yuan
- Re: Problem with the Legacy ASP files and the Sql Server Express
- Prev by Date: Re: Populating DropDownLists with AJAX - Beginner
- Next by Date: Re: Class files and performance
- Previous by thread: Re: Populating DropDownLists with AJAX - Beginner
- Next by thread: Re: Problem with the Legacy ASP files and the Sql Server Express
- Index(es):
Relevant Pages
|