“System.AccessViolationException:尝试读取或写入受保护的内存”在填充DataTable时

时间:2014-01-02 14:00:45

标签: sql-server vb.net stored-procedures ado.net

使用ASP.NET 4.51和VS 2013尝试使用存储过程填充数据表时出现以下错误。

System.AccessViolationException: Attempted to read or write protected memory

我已将错误追踪到以下内容:

Using myDT As New DAL.mbr_MediaComments.usrsp_mbr_MediaComments_CommentorsDataTable
    Using myTA As New DAL.mbr_MediaCommentsTableAdapters.usrsp_mbr_MediaComments_CommentorsTableAdapter

        myTA.Fill(myDT, toMbrID, mediaID) <------System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

这是我的存储过程定义:

CREATE PROCEDURE [dbo].[usrsp_mbr_MediaComments_Commentors] 
-- Add the parameters for the stored procedure here
@mbrID int = 0,
@mediaID bigint = 0

AS
BEGIN

    //my query code

END

1 个答案:

答案 0 :(得分:6)

我发现了问题,错误是由以下原因引起的:

存储过程已将其中一个参数定义为 bigint

它应该是 int ,就像在数据库表模式中定义的一样。

我似乎将Integer值传递给表适配器Stored Procedure期望Bigint会导致AccessViolationException错误。

我希望这些信息有助于其他人。