向团队添加成员会引发通用 Sql 错误

问题描述 投票:0回答:1

在 Dynamics v9 on-prem 中,我尝试使用以下代码片段向团队添加成员:

public static void AddMembersToTeam(Guid teamId, Guid[] membersId, IOrganizationService service)
    {
        AddMembersTeamRequest addRequest = new AddMembersTeamRequest();
    
        addRequest.TeamId = teamId;
    
        addRequest.MemberIds = membersId;
    
        service.Execute(addRequest);
    }

我收到错误:

Microsoft.Crm.CrmException:一般 SQL 错误。 ---> Microsoft.Crm.CrmException:一般 SQL 错误。 ---> System.Data.SqlClient.SqlException:INSERT 语句冲突 具有外键约束“system_user_team_membership”。这 数据库“rs_MSCRM”、表“dbo.SystemUserBase”中发生冲突, 列“系统用户ID”。该声明已终止。    在 System.Data.SqlClient.SqlConnection.OnError(SqlException异常, 布尔值breakConnection、Action

1 wrapCloseInAction)    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)    at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)    at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource
1完成、Int32超时、Task&任务、 布尔值&usedCache、布尔值asyncWrite、布尔值inRetry) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)    at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()    at Microsoft.Crm.CrmDbConnection.InternalExecuteWithRetry[TResult](Func
1 执行方法,IDbCommand 命令)    at Microsoft.Crm.CrmDbConnection.<>c__DisplayClass106_0.b__0() 在 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger 记录器、EventId eventId、ActivityType ActivityType、Func
1 func)    at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func
1 func)    at Microsoft.Crm.Platform.Server.DataEngine.SqlDataAccessManager.<>c__DisplayClass2_0.b__0() 在 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger 记录器、EventId eventId、ActivityType ActivityType、Func
1 func)    at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func
1 func)    at Microsoft.Crm.Platform.Server.DataEngine.EntityCrudManager.<>c__DisplayClass3_0.b__0() 在 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger 记录器、EventId eventId、ActivityType 活动类型、Action 操作)   在 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger 记录器、XrmTelemetryActivityType 活动类型、Action 操作)位于 Microsoft.Crm.BusinessEntities.BusinessProcessObject.DoCreate(IBusinessEntity 实体,ExecutionContext 上下文)位于 Microsoft.Crm.BusinessEntities.BusinessProcessObject.CreateAssociation(BusinessEntityMoniker 实体OneMoniker、BusinessEntityMoniker 实体TwoMoniker、 多对多实体关系多对多关系、关系 实体一关系、关系 实体二关系、Guid PrimaryKeyValue、ExecutionContext 上下文)位于 Microsoft.Crm.BusinessEntities.BusinessProcessObject.CreateAssociation(BusinessEntityMoniker 实体OneMoniker,BusinessEntityMoniker 实体TwoMoniker,字符串 AssociationRelationshipName、ExecutionContext 上下文)位于 Microsoft.Crm.ObjectModel.TeamMembershipServiceInternal`1.Associate(BusinessEntityMoniker 实体OneMoniker,BusinessEntityMoniker 实体TwoMoniker,字符串 AssociationRelationshipName、ExecutionContext 上下文)位于 Microsoft.Crm.BusinessEntities.BusinessProcessObject.HandleAssociationOperation(BusinessEntityMoniker 实体OneMoniker,BusinessEntityMoniker 实体TwoMoniker,字符串 AssociationRelationshipName, 布尔值 createAssociation, ExecutionContext 上下文)位于 Microsoft.Crm.BusinessEntities.BusinessProcessObject.AssociateEntities(BusinessEntityMoniker 实体OneMoniker,BusinessEntityMoniker 实体TwoMoniker,字符串 AssociationRelationshipName, ExecutionContext 上下文) --- 结束 内部异常堆栈跟踪 ---    --- 内部异常堆栈结束 跟踪 --- 于 Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext 上下文)在 Microsoft.Crm.Extensibility.PipelineInstrumentationHelper.Execute(布尔值 InstrumentationEnabled,字符串秒表名称, ExecuteWithInstrumentation 操作,PipelineExecutionContext 上下文)   在 Microsoft.Crm.Extensibility.Pipeline.<>c__DisplayClass2_1.b__0()

怎么了?此代码也在不同的本地组织和云中成功执行。

dynamics-crm dataverse
1个回答
0
投票

错误指出您尝试添加的一名成员已经是团队成员。 您可以在添加之前先检查成员资格,或者一次添加一个成员,忽略出现给定错误的成员。

© www.soinside.com 2019 - 2024. All rights reserved.