1

嗨,我正在数据管理器中提取数据,这些数据是通过 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。

谢谢!

4

2 回答 2

0

您可以使用 LEFT() 获取前 8000 个字符

SELECT LEFT(Description,8000) AS Description FROM YourTable
于 2012-09-28T10:27:28.180 回答
0

这个错误什么时候发生?

您的错误不是来自您的数据,而是来自“SF Schema”.“Campaign”表的 DDL。

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

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

DECLARE @table TABLE
(
    dummy nvarchar(32000)
)

这会产生以下输出:

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

也许 LEFT,如另一个答案中所述,可以帮助您,但我想您会遇到相同的错误,因为问题出在源表的定义中。

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

于 2012-09-28T10:39:20.657 回答