2012-09-28 64 views
1

您好我正在通过Salesforce从Data Manager中获取数据,因此数据类型和限制在Salesforce中设置,我无法控制。我想知道如何限制进入和插入MS SQL的数据量。这是错误: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

谢谢!

+0

你可能要重新考虑该列您取得进一步进展之前。 – noel

+0

您在表模式中设置的列大小是多少? – Prasanna

+0

模式来自salesforce,所以我无法将varchar修改为varchar(max),所以无论如何我可以对上面的SQL查询进行一些修改,以将描述站点限制为小于8000? – user1383080

回答

0

可以使用LEFT获得第8000个字符()

SELECT LEFT(Description,8000) AS Description FROM YourTable 
+0

它不接受left()函数。 – user1383080

+1

发生任何错误? – Prasanna

0

当这个eror发生?

您的错误不是来自您的数据,而是来自“SF架构”,“Campaign”表格的DDL。

这张表怎么可能有一个大小为32000的列?它在哪里定义?

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

DECLARE @table TABLE 
(
    dummy nvarchar(32000) 
) 

这将产生以下输出:

消息131,级别15,状态2,第3行 给予列 '虚设' 的大小(32000)超过允许的任何数据类型的最大(8000 )。

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

留在MSDN:http://msdn.microsoft.com/es-es/library/ms177601.aspx

相关问题