Sql server MS SQL Server无法在ntext上调用方法
我正在尝试从表在MS SQL server中创建视图。表名是Account\u Plan,我正在尝试创建一个视图Account\u Plan\u vw。在执行DDL创建视图时,我得到如下所示的错误 Msg 258,15级,状态1,程序账户\计划\大众,第56行 无法在ntext上调用方法 Msg 207,16级,状态1,程序账户\计划\大众,第22行 列名“CU将如何实现这些目标2”无效 错误消息显示列“CU将如何实现这些目标2”无效。但是,这是ntext类型的帐户计划表中的有效列 有人能帮忙吗?我刚刚从CREATEVIEW语句中删除了额外的列Sql server MS SQL Server无法在ntext上调用方法,sql-server,view,ntext,Sql Server,View,Ntext,我正在尝试从表在MS SQL server中创建视图。表名是Account\u Plan,我正在尝试创建一个视图Account\u Plan\u vw。在执行DDL创建视图时,我得到如下所示的错误 Msg 258,15级,状态1,程序账户\计划\大众,第56行 无法在ntext上调用方法 Msg 207,16级,状态1,程序账户\计划\大众,第22行 列名“CU将如何实现这些目标2”无效 错误消息显示列“CU将如何实现这些目标2”无效。但是,这是ntext类型的帐户计划表中的有效列 有人能帮忙吗
CREATE VIEW [dbo].[Account_Plan_vw]
AS
SELECT
Results_1.Account__c
,Results_1.How_the_CU_will_achieve_these_objectives__c
,Results_1.How_the_CU_will_achieve_these_objective2__c
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY apc1.Account__c ORDER BY apc1.Year__c DESC, apc1.CreatedDate DESC) AS RN_1
,apc1.Account__c
,apc1.How_the_CU_will_achieve_these_objectives__c
,apc1.How_the_CU_will_achieve_these_objective2__c
FROM Account_Plan apc1
INNER JOIN RecordType rtp1
ON apc1.RecordTypeId=rtp1.[Id]
AND rtp1.DeveloperName = 'Account_Plan'
INNER JOIN Account acc1
ON acc1.[Id] = apc1.Account__c
WHERE apc1.Year__c <= YEAR(GETDATE())
) AS Results_1
WHERE RN_1 = 1
NTEXT已弃用,请将其转换为NVARCHARMAX 见:
你应该考虑改变表格,而不仅仅是在视图中,但是:
CREATE VIEW [dbo].[Account_Plan_vw]
AS
SELECT
results_1.Account__c
, results_1.How_the_CU_will_achieve_these_objectives__c
, results_1.How_the_CU_will_achieve_these_objective2__c
FROM (
SELECT
ROW_NUMBER() OVER (PARTITION BY apc1.Account__c ORDER BY apc1.Year__c DESC, apc1.CreatedDate DESC) AS rn_1
, apc1.Account__c
, apc1.How_the_CU_will_achieve_these_objectives__c
, cast(apc1.How_the_CU_will_achieve_these_objective2__c as nvarchar(max)) as How_the_CU_will_achieve_these_objective2__c
FROM Account_Plan apc1
INNER JOIN RecordType rtp1 ON apc1.RecordTypeId = rtp1.[Id]
AND rtp1.DeveloperName = 'Account_Plan'
INNER JOIN Account acc1 ON acc1.[Id] = apc1.Account__c
WHERE apc1.Year__c <= YEAR(GETDATE())
) AS results_1
WHERE RN_1 = 1
这是一个有点神秘的问题。salesforce对象有一个字段作为last_peer_review_date___c,没有向任何人授予任何权限。因此,DBAMP用户无法看到该字段,因此在我使用SF_Replicate命令时,未能在SQL server中创建该字段。CREATEVIEWSQL是我几周前创建的,当时它确实可以工作。现在,当我使用相同的SQL时,它失败了,因为SQL有last_peer_review_date字段,但Account_Plan表没有
Balaji Pooruli我们可以看看您的代码吗?我无法在这里添加代码。我收到一条错误消息,说评论很长。您的问题并在那里添加代码。我现在就这么做了。如果您使用发布的代码创建视图(即没有额外的列),会发生什么情况?我看不出这如何回答最初的问题。如果你在互联网上搜索这个问题,你会发现关于VARCHAR的类似问题的例子。问题似乎是一个模糊的语法错误。谢谢大家的回复。不幸的是,我没有修改表Account_计划的自由,因为它是使用DBAMP connector使用SF_Replicate命令从Salesforce CRM复制的。Salesforce对象帐户计划中的长文本区域字段自动映射到NTEXT字段。我将在创建视图时尝试cast解决方案,看看它是否有帮助。仅供参考,Salesforce中的长文本区域最多可以处理32768个字符,但我猜ntext最多只能处理8000个字符。因此,可能存在一些截断问题。感谢您的回复。我发现了这个问题,发现它有点神秘。salesforce对象有一个字段作为last_peer_review_date___c,没有向任何人授予任何权限。因此,DBAMP用户无法看到该字段,因此在我使用SF_Replicate命令时,未能在SQL server中创建该字段。CREATEVIEWSQL是我几周前创建的,当时它确实可以工作。现在,当我使用相同的SQL时,它失败了,因为SQL中有last_peer_review_date字段,但Account_Plan表没有。1在Salesforce中更改字段last_peer_review_date的权限2在SQL server中删除表Account_Plan 3使用SF_Replicate复制Account_Plan表,4再次执行create view语句。现在效果很好。你应该加上这个作为回答,然后接受它。然后有一个清晰的CSU使用记录。谢谢