SQL超出了允许的最大错误

时间:2012-09-28 09:58:42

标签: sql sql-server-2008

您好我在Data Manager中提取数据,而这些数据是通过Salesforce提取的,所以数据类型和限制是在Salesforce中设置的,我无法控制。我想知道如何限制进入和插入MS SQL的数据量。这是错误:

[42000]Microsoft SQL Server Native Client 10.0
The size (32000) given to the column 'Description' exceeds the maximum allowed for any data type (8000).

这是我提取数据的查询:

SELECT  "Id",
"IsDeleted",
"Name",
"ParentId",
"Type",
"Status",
"StartDate",
"EndDate",
"CurrencyIsoCode",
"ExpectedRevenue",
"BudgetedCost",
"ActualCost",
"Description",
"ExpectedResponse",
"NumberSent",
"IsActive",
"NumberOfLeads",
"NumberOfConvertedLeads",
"NumberOfContacts",
"NumberOfResponses",
"NumberOfOpportunities",
"NumberOfWonOpportunities",
"AmountAllOpportunities",
"AmountWonOpportunities",
"OwnerId",
"CreatedDate",
"CreatedById",
"LastModifiedDate",
"LastModifiedById",
"SystemModstamp",
"LastActivityDate",
"CampaignMemberRecordTypeId",
"Date_of_Event__c",
"Venue__c"
FROM   "SF Schema"."Campaign"

无论如何设置“描述”限制,最大值为8000。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用LEFT()

获得前8000个字符
SELECT LEFT(Description,8000) AS Description FROM YourTable

答案 1 :(得分:0)

这是什么时候发生的?

您的错误不是来自您的数据,而是来自“SF Schema”的DDL。“广告系列”表。

该表如何有一个大小为32000的列?在哪里定义了?

这个小示例代码显示了如何重现您的错误消息。

DECLARE @table TABLE
(
    dummy nvarchar(32000)
)

这会产生此输出:

Msg 131,Level 15,State 2,Line 3 给'dummy'列的大小(32000)超过了任何数据类型允许的最大值(8000)。

也许LEFT,如另一个答案所述,可以帮助你,但我想你会得到同样的错误,因为问题在于源表的定义。

MSDN上的LEFT:http://msdn.microsoft.com/es-es/library/ms177601.aspx