Microsoft dice:
"Al conectarse a través de TCP a SSAS, la biblioteca del cliente se hará pasar por el usuario de Windows utilizando el nombre de usuario y la contraseña especificados y luego se conectará como de costumbre al servidor".
"Al conectarse a través de HTTP(S) a SSAS, las credenciales se proporcionan al servidor web en función del modo de autenticación configurado en el servidor web, por ejemplo, autenticación básica o autenticación de Windows. El servidor web realizará la suplantación de identidad de Windows adecuada antes de conectarse a el servidor SSAS, por lo que proporciona el flujo de credenciales correcto al servidor".
Sin embargo, cuando hago esto:
using Tabular = Microsoft.AnalysisServices.Tabular; using (Tabular.Server server = new Tabular.Server()) { //connectionString = "Provider=MSOLAP;DataSource=ServerIP;UserID=xx;Password=xx;Persist Security Info=True;Impersonation Level=Impersonate;" server.Connect(connectionString); }Utiliza las credenciales de mi cuenta de usuario que ejecuta el código, no el ID de usuario y la contraseña en ConnectionString.
¿Cómo puedo hacer que se conecte a través de "TCP"?
ACTUALIZACIÓN: usando la sugerencia de @GregGalloway y la lógica de aquí : he implementado una clase Impersonator. Con él he actualizado mi código para hacer lo siguiente:
using (Tabular.Server server = new Tabular.Server()) { using (new Impersonator("UserName", "Domain", "Password")) { server.Connect(connectionString); } }Desafortunadamente, cuando perfilo la llamada al servidor SSAS, puedo ver que todavía usa las mismas credenciales que antes y que la conexión con el servidor es exitosa, independientemente de que se pasen las credenciales al constructor. Al revisar el código, puedo ver que no se lanzan excepciones en ningún momento.