无法从Web服务调用的存储过程中插入记录

时间:2011-10-12 19:46:46

标签: sql-server-2008 stored-procedures

我有下表:

CREATE TABLE [dbo].[omgbbq](
    [tbl_key] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](10) NOT NULL,
    [id] [int] NULL,
 CONSTRAINT [PK_omgbbq] PRIMARY KEY CLUSTERED 
(
    [tbl_key] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

...以及以下存储过程:

CREATE PROCEDURE sp_omgwth 
    @name VARCHAR(10), 
    @id INT
AS
BEGIN
    INSERT INTO omgbbq (name, id) VALUES (@name, @id);
    SELECT MAX(tbl_key) AS Max_tbl_key FROM omgbbq;
END

我通过调用SSMS中的过程添加了一条记录:

EXEC sp_omgwth 'Gareth', 2

并获取

tbl_key,name,id
1,Gareth,2

到目前为止,这么好。一位同事试图从Web服务中调用它并获得返回 'Max_tbl_key'2

也如预期。但是,记录不会出现在表格中。当我通过从SSMS调用SP添加新记录时,我们在表中看到以下内容:

tbl_key,name,id
1,Gareth,2
3,Gawain,4

就像它添加了记录一样,增加了身份值,但后来......我不知道,回滚它还是什么。

有什么想法吗?我们俩都是以同一个用户身份连接到服务器,所以看起来它可能不是凭据权限问题。我们从另一个表和另一个SP获得了相同的行为,这就是我们创建这两个作为测试的原因。

2 个答案:

答案 0 :(得分:0)

也许您需要从Web服务代码提供SQL客户端调用的示例。您可以尝试设置并检查EXECUTE返回状态。

答案 1 :(得分:0)

了解数据库中发生的事情的最佳方法是运行跟踪。运行SQL Server Profiler并调用存储过程的Web服务。然后查看事件以了解正在发生的事情。

这是一个神秘的问题,但看一下痕迹会告诉你什么和为什么。