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

Geo*_*kos 3 vb.net sql-server ado.net stored-procedures

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

System.AccessViolationException: Attempted to read or write protected memory
Run Code Online (Sandbox Code Playgroud)

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

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.
Run Code Online (Sandbox Code Playgroud)

这是我的存储过程定义:

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
Run Code Online (Sandbox Code Playgroud)

Geo*_*kos 6

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

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

它应该是数据库表模式中定义的int.

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

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

  • 使用AccessViolationException不应导致int和bigint之间的转换!围绕.Net 4.51存在一个更大的问题(同时还带有VS2013)多个用户在各种代码路径中遇到类似的错误并向Microsoft报告; 他们还没有决议. (2认同)