Get Database Name From CRM WebService

Con risposta Get Database Name From CRM WebService

  • venerdì 17 ottobre 2008 16:44
     
     

     

    Is there a way to grab the CRM Database Name associated with an instance of CrmService?

     

    For example, ideally would be something like below:

     

    CrmService service = CrmServiceUtility.GetCrmService("CRM Server URL", " CRM Organization Name");

     

    DatabaseInfo db = service.getAssociatedDatabase();

Tutte le risposte

  • venerdì 17 ottobre 2008 17:53
    Proprietario
     
     

    You can only use CrmDeploymentService to get the database name.

     

     

    Jim

     

  • venerdì 17 ottobre 2008 18:00
     
     
    You can try as

     

    Add Web Reference: http://<server>/MSCRMServices/2007/CrmDeploymentService.asmx in your project

     

    Create a class

     

       public class CustomCrmService
        {

            public string getAssociatedDatabase(string organizationEntity)
            {
                CrmDeploymentService oService = new CrmDeploymentService();
                oService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

                RetrieveAllRequest oReq = new RetrieveAllRequest();
                oReq.EntityName = EntityName.Organization;
                RetrieveAllResponse resp = (RetrieveAllResponse)oService.Execute(oReq);

                string strDataBaseName = string.Empty;
                foreach (Organization item in resp.Entities)
                {
                    if (item.FriendlyName.Equals(organizationEntity))
                    {
                        strDataBaseName = item.DatabaseName;
                        break;
                    }
                }
                return strDataBaseName;
            }
        }
     

     

    Call the method getAssociatedDatabase

     

    CustomCrmService oService = new CustomCrmService();
    string databaseName = oService.getAssociatedDatabase("Organization Name");

     

    []s

     

    Maykon Alves

    Specialist Dynamics CRM - Brazil


               

     

  • sabato 18 ottobre 2008 15:08
     
     

    Thank you. This is almost exactly what I needed.

     

    One question though.  It appears that DeploymentMangerService will fail with DefaultNetworkCredentials unless the logged in user has been added as a Deployment Manager.

     

    Is there any way around this?  I can hard code in the application administrator (see below), but I'd really prefer not too.  I need it to be as flexible as possible.

     

    oService.Credentials = new System.Net.NetworkCredential("CRMAPPADMIN", "CRMAPPADMIN");

     

     

  • sabato 18 ottobre 2008 16:58
     
     Con risposta

    You can add the user in Deployment Manager -> Deplyoment Administrators, so these users can access the web service. But in this scenario, the users would have the privilege to administrate CRM installation. This is not a best pratice.

    The best option is to add the criptographed user and password in a config file and use this information only when you need.


    Maykon Alves
    CRM Specialist - Brazil