我有下表:
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获得了相同的行为,这就是我们创建这两个作为测试的原因。
答案 0 :(得分:0)
也许您需要从Web服务代码提供SQL客户端调用的示例。您可以尝试设置并检查EXECUTE返回状态。
答案 1 :(得分:0)
了解数据库中发生的事情的最佳方法是运行跟踪。运行SQL Server Profiler并调用存储过程的Web服务。然后查看事件以了解正在发生的事情。
这是一个神秘的问题,但看一下痕迹会告诉你什么和为什么。