Ereignisanzeige/Events „ID 10016“

Es sind neue „Error“ Einträge mit dem ID=10016. Und der Text:

The application-specific permission Settings do not grant Local Activivation permission for the COM Server application with CLSID {….} and APPID {….} to the user ….. SID {….} from address localHost (Using LRPC) running in the application container Unavailable SID {….}. This security permission can be modified using the Component Services administrative tool.

Link: https://answers.microsoft.com/en-us/windows/forum/windows_8-performance/application-container-unavailable-sid-unavailable/4ec39b15-1f43-4d7a-bbf6-11706a685b7c

Nach dem Klären, dass es sich um die „COM Server application“ handelt „Microsoft.SQLServer.Dts.Server.DtsServer“ und in den „Component Services“ den „Microsoft SQL Server Integration Service 11.0“ ging ich davon es aus reichen sollte dem fraglichem „Agent-User“ die Rechte zu den Datenbanken „msdb“ und „SSISDB“ zu erteilen.

/*
Zugriff auf msdb und SSISDB
Link: https://docs.microsoft.com/en-us/sql/integration-services/security/integration-services-roles-ssis-service?view=sql-server-2017
Hinweis: Um SSIS-Jobs anzulegen, ist es meist notwendig weitere Einstellungen vorzunehmen, wie z.B. einen "Proxy".
*/
USE [SSISDB]
GO
CREATE USER [NT SERVICE\SQLAgent$SQL....] FOR LOGIN [NT SERVICE\SQLAgent$SQL....] WITH DEFAULT_SCHEMA=[dbo]
GO
EXEC sp_addrolemember @rolename = 'ssis_admin', @membername = 'NT SERVICE\SQLAgent$SQL....'
GO
USE [msdb]
GO
CREATE USER [NT SERVICE\SQLAgent$SQL....] FOR LOGIN [NT SERVICE\SQLAgent$SQL....] WITH DEFAULT_SCHEMA=[dbo]
GO
EXEC sp_addrolemember @rolename = 'db_ssisoperator', @membername = 'NT SERVICE\SQLAgent$SQL....'
GO

Weiterhin erschien die Fehlermeldungen und musste dem oberem Link folgen und die „Component Services“ anzupassen.
Wobei die Fehlermeldungen in der Ereignisanzeige nicht mehr auftraten.

SSIS/Kingsway MSCRM-Lookup per ScriptComponent

 

Verweise:

//KingswaySoft.DynamicsCrmServices   
//Pfad: C:\WINDOWS\assembly\GAC_MSIL\KingswaySoft.DynamicsCrmServices\1.0.0.0__705df8e0751bcea7\KingswaySoft.DynamicsCrmServices.dll
//KingswaySoft.IntegrationToolkit.DynamicsCrm   
//Pfad: C:\Program Files (x86)\Microsoft SQL Server\120\DTS\PipelineComponents\KingswaySoft.IntegrationToolkit.DynamicsCrm.dll

Namespaces im Code:

using KingswaySoft.DynamicsCrmServices.Soap2011.OrganizationService;
using KingswaySoft.DynamicsCrmServices.Soap2011.OrganizationService.Messages;
using KingswaySoft.DynamicsCrmServices.Soap2011.OrganizationService.Metadata;
using KingswaySoft.DynamicsCrmServices.Soap2011.OrganizationService.Query;
using KingswaySoft.IntegrationToolkit.DynamicsCrm;

Code:

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        /*
         * Add your code here
         * 
         * http://www.kingswaysoft.com/blog/2013/06/24/Writing-Script-Component-or-Script-Task-using-CRM-Connection-Manager
         */

        //var connMgr = this.Connections.Dynamics365;
        //var conn = (CrmConnection)connMgr.AcquireConnection(null);

        var connMgr = this.Connections.Dynamics365;
        var connectionString = (string)connMgr.AcquireConnection(null);
        var conn = new CrmConnection(connectionString);

        var orgService = (IOrganizationService)conn.GetCrmService();

        //Select parentcustomerid from contact where contact = '00000-0000000000-00000-00000-0000'
        var inputValue = Row.contactid;  // input0: Field "contactid"
        var retrievedEntity = orgService.Retrieve("account", parmInputvalue, new ColumnSet("parentcustomerid"));
        var outputValue = retrievedEntity.GetAttributeValue("parentcustomerid");
        Row.parentcustomerid = outputValue;  // output0: new Field "parentcustomerid"
    }
</pre