【问题标题】:Exception message, filling a datatable with SqlDataAdapter异常消息,使用 SqlDataAdapter 填充数据表
【发布时间】:2013-05-30 15:19:39
【问题描述】:

我对 SQL 运行了一个简单的查询,但似乎无法正常工作。

 DataTable loDTDOffre = new DataTable();
 SqlCommand loSQLCommand = new SqlCommand("dbo.SP_StoredProc", loConnectionBD.ConnectionSql);
 loSQLCommand.CommandType = CommandType.StoredProcedure;

 loSQLCommand.Parameters.Add("@liNoUnit", SqlDbType.Int);
 loSQLCommand.Parameters["@liNoUnit"].Value = noUniteProduction;

 SqlDataAdapter loSqlDataAdapter = new SqlDataAdapter(loSQLCommand);

 loSqlDataAdapter.SelectCommand = loSQLCommand;
 loSqlDataAdapter.Fill(loDTDOffre);

我的数据库连接已打开,在 SQL Management Studio 中执行的存储过程工作正常。我在 VS2010 中得到的错误信息是:

Warning: Fatal error 50000 occurred at May 30 2013 11:17AM. Note the error and time, and contact your system administrator.
Process ID 59 has raised user error 50000, severity 20. SQL Server is terminating this process.

有什么方法可以更清楚地了解错误信息,代码似乎是正确的。错误信息太笼统了,我不知道我做错了什么。

我的存储过程返回一个简单的选择,一行。

谢谢

【问题讨论】:

  • 看到存储过程不会有什么坏处。我很好奇那里是否有可能导致这种情况的raiseerror 子句。
  • 实际上我认为问题在于您将StoredProcedure 命令类型分配给SelectCommand。我会尝试放弃你的 SqlDataAdapter 并用 loDTDOffre.Load(loSQLCommand.ExecuteReader()); 替换它
  • 如果我运行 SQL Profiler,我会看到我的查询(存储过程),从 SQL Studio 执行它,一切正常。我的存储过程中有一个“raiseerror”,但从未到达该行。 VS2010中没有内部异常,试图了解更多关于异常的细节,“ExecuteReader”示例也不起作用。

标签: c# stored-procedures sqldataadapter


【解决方案1】:

原来它是在应用程序上运行的,结果出来了:

对象“thisTable”、数据库“thisDatabase”、模式“dbo”的 SELECT 权限被拒绝。

已解决,谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多