1 Reply Latest reply on Mar 27, 2013 1:59 AM by hanyong

    Uploading and deleting values of the PI Collective using PI SDK Buffering


      I wonder if you could provide some ideas in order to solve the problem described below:


      We have a customer that has just created his first PI collective. He has an spreadsheet that needs to send and delete values to the PI Server.
      With the release of PI Buffer Subsystem 3.4.380.79, we can use the PI SDK Buffering to send values to both members of the collective. However, it is still not possible to delete values from both servers using this feature.


      The common solution is to disable PI SDK Buffering and connect to the members of the collective separately and delete the values. For instance, the application should connect to the primary, delete its values, then it should do the same on the secondary.
      We have send an example to the customer showing how to enable and disable PI SDK Buffer programmatically. This example includes the automatic restart of the pibufss service.
      The remaining problem is that the domain user under which the customer is running, does not have permissions to restart Windows services.


      Is there any workaround so that we don´t need to give to this user administrative privileges?
      What are the options we can provide the customer to add and delete values from both collective members?

        • Re: Uploading and deleting values of the PI Collective using PI SDK Buffering

          Hi Bruno,


          A quick search online about granting non-admin users privilege to start and stop windows services leads me to this:


          Vinay on Stack Overflow

          Grant the permission using “Subinacl.exe”, SubInACL is a command-line tool that enables administrators to obtain security information about files, registry keys, and services, and transfer this information from user to user, from local or global group to group, and from domain to domain.

          I followed the same example of create two non admin user account and execute command SUBINACL /SERVICE \DomainName\MyService /GRANT=DomainName\USERS=TOP so this will grant the user to start/stop the service.


          You probably want to research more into the command and see if that is suitable for you.


          I can't think of any alternatives if you are going to use SDK buffering to fan the value out to the collective members.... It is possible to do something like you are doing for deleting values, switching to different collective members and writing values to each member. Does cases where you have to delete values from the collective happen very often? Depending on how often these can happen, this should give us an idea whether or not using SDK buffering is a suitable option for you.