Sql*_*yan 25 database sql-server insert
首先:我理解这个错误意味着什么 - 我没有尝试解决它的一个实例.
众所周知,这个错误很难排除故障,因为如果你将100万行插入100列宽的表中,几乎无法确定导致错误的行的哪一列 - 你必须修改你的进程以插入一行一次,然后看看哪一个失败了.说得客气一点,这是一种痛苦.
是否有任何理由错误看起来不像这样?
String or Binary data would be truncated
Error inserting value "Some 18 char value" into SomeTable.SomeColumn VARCHAR(10)
Run Code Online (Sandbox Code Playgroud)
如果不是表结构本身,这将使查找和更正值变得容易得多.如果看到表数据是一个安全问题,那么可能是通用的,比如给出尝试值的长度和失败列的名称?
Sql*_*yan 15
事实证明MS Connect上有一个开放的"功能请求" - 如果您希望功能发生变化,我建议您投票支持.
https://connect.microsoft.com/SQLServer/feedback/details/339410/
添加:
实际上看起来还有另外一个要求同样的功能(虽然命名不佳),自从育空2005年的发展以来一直很出色,我鼓励人们也投票支持:
https://connect.microsoft.com/SQLServer/feedback/details/125347/
2016年更新
似乎微软试图删除这个错误的真实年龄的证据.很公平.找到存档的旧网站.
在找不到可接受的答案后,我想出了以下内容:
你应该最终得到类似的东西
SELECT
Col1, Col2, ..., [ColN]
INTO [MyTempTable]
FROM
[Tables etc.]
WHERE 0 = 1
Run Code Online (Sandbox Code Playgroud)
这将在您的数据库中创建一个名为MyTempTable的表,您可以将其与目标表结构进行比较,以查看它们的不同之处,即您可以比较两个表上的列.
编辑:您可以比较原始表和MyTempTable上每列的数据类型和列大小,以查看它们的不同之处.新表中的所有列名将与旧表相同,数据类型和大小将是相同的例外情况除了违规栏.换句话说,使用此查询,SQL将自动创建足够大的列,以处理源表中可能的最大条目
| 归档时间: |
|
| 查看次数: |
17447 次 |
| 最近记录: |