sql-server – SQL错误:字符串或二进制数据将被截断
我在一个称为Telligent的社区平台上进行集成.我正在使用名为BlogML的第三方加载项,将
XML文件(以BlogML格式)的博客文章导入到我本地的Telligent网站. Telligent平台在SDK中提供了许多课程,以便我可以通过编程方式添加内容,例如博客帖子.例如.
myWeblogService.AddPost(myNewPostObject); 我使用的BlogML应用程序基本上解析XML并创建博客帖子对象,然后使用上述示例行的代码将其添加到站点.大约40后导入我得到一个SQL错误: Exception Details: System.Data.SqlClient.SqlException: String or binary data would be truncated. The statement has been terminated. 我相信这个错误意味着我试图将太多的数据插入到具有最大大小限制的db字段中.不幸的是,我不知道这是一个问题的领域.我在执行导入时运行SQL Server Profiler,但我似乎看不到出现错误的存储过程.有另一种方法可以使用分析器或另一种工具来查看什么存储过程,甚至是什么字段引起的错误?有什么其他提示可以获取更多的信息,特别是在哪里看? 哦,第三方工具的快乐… 解决方法你是正确的,因为异常是由于试图将太多的数据填充到基于字符/二进制的字段中.如果您正在捕获正确的事件,运行跟踪应该可以让您看到哪个过程/语句抛出异常,那么您想要捕获的事件将包括:> SQL:BatchStarting 如果你确定它是一个包含错误代码的存储过程,你可以避免捕获#的1-4.确保捕获跟踪中的所有相关列(如果使用Profiler工具运行跟踪,则应为默认值). Exception类将包括跟踪中的实际错误,这应该允许您在抛出异常的同一SPID中看到紧邻的前一条语句.除了已完成的事件之外,还必须包括起始事件,因为发生的异常将排除相关联的完成事件在跟踪中触发. 如果您可以将跟踪过滤到特定的数据库,应用程序,主机名等,如果您处于忙碌的服务器,那么这样做一定会使调试变得更容易,但是如果您处于空闲服务器上,则可能不需要打扰过滤. 假设您正在使用Sql 2005,该跟踪将包含一个名为“EventSequence”的列,该列基本上是事件触发序列排序的递增值.一旦您运行跟踪并捕获输出,找到触发的“异常”事件(如果您使用概要分析器,则该行将为红色),那么您应该能够简单地找到最新的SP:StmtStarting或SQL:在Exception之前发生的相同SPID的StmtStarting事件. 这是我拍摄的一个截图的屏幕截图,它重现与你的事件相似的事件: alt text http://i47.tinypic.com/1zc01mo.jpg 您可以在红色中看到异常行,并且突出显示的行是在相同SPID的异常之前触发的SP:StmtStarting事件之前的立即数.如果要查找此语句是其中一部分的存储过程,请查找ObjectName和/或ObjectId列中的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQLServer 2008参数@objname不明确或所声明的@ob
- sql-server – 如何防止意外地使用生产数据库进行
- Keepalived+HAProxy实现MySQL高可用负载均衡的配
- sql-server – SSRS:动作是否可以加载子报表?
- sqlserver 通用存储过程分页代码(附使用ROW_NUMB
- sql – 检查所有三列是否为null或null
- sql-server – 从SQL Server中选择具有匹配列的行
- SQL Server某一个指定值靠前排序
- 动刀EFOracleProvider,使其支持char、timestamp
- sql-server – 在多个事实表之间加入维度