/// <summary> /// Create data sources from given definition file using serverName. /// </summary> /// <param name="datasourceFile">File containing data source definition</param> /// <param name="targetFolder">RS Target Folder</param> /// <param name="fileExtension">File extension</param> public void CreateDataSources(string datasourceFile, string targetFolder, string fileExtension) { XmlDocument doc = new XmlDocument(); doc.Load(datasourceFile); XmlNodeList datasourceNodes = doc.SelectNodes("//DataSource"); string extension = string.Empty; string name = string.Empty; string connectString, server, database = string.Empty; bool enabled = true; string prompt = string.Empty; bool useWinCred = false; string userid = string.Empty; string password = string.Empty; bool impersonateUser = false; foreach (XmlNode node in datasourceNodes) { extension = node.Attributes["Extension"].Value; name = node.Attributes["Name"].Value + fileExtension; server = ReportServerInformation.DefaultInformation.DatasourceDatabaseServer; database = node.Attributes["Database"].Value; connectString = string.Format("Server={0};Database={1}", server, database); enabled = Convert.ToBoolean(node.Attributes["Enabled"].Value); prompt = node.Attributes["Prompt"].Value; useWinCred = Convert.ToBoolean(node.Attributes["UseWindowsCredential"].Value); userid = ReportServerInformation.DefaultInformation.DatasourceSQLUser; password = ReportServerInformation.DefaultInformation.DatasourceSQLPassword; useWinCred = Convert.ToBoolean(node.Attributes["ImpersonateUser"].Value); RSDataSourceDefinition dsDef = CreateDatasourceDefinition(extension, connectString, enabled, prompt, impersonateUser, useWinCred, userid, password); CreateDataSource(name, dsDef, targetFolder); } }
public override string CreateDataSource(string name, RSDataSourceDefinition dsDef, string parent) { var dataSource = new DataSource { ConnectionString = dsDef.ConnectString, IsConnectionStringOverridden = true, CredentialRetrieval = dsDef.CredentialRetrieval == RSCredentialRetrievalEnum.Integrated ? CredentialRetrievalType.Integrated : dsDef.CredentialRetrieval == RSCredentialRetrievalEnum.Prompt ? CredentialRetrievalType.Prompt : dsDef.CredentialRetrieval == RSCredentialRetrievalEnum.Store ? CredentialRetrievalType.Store : CredentialRetrievalType.None, CredentialsByUser = dsDef.CredentialRetrieval == RSCredentialRetrievalEnum.Prompt ? new CredentialsSuppliedByUser { UseAsWindowsCredentials = dsDef.WindowsCredentials, DisplayText = dsDef.Prompt } : null, CredentialsInServer = dsDef.CredentialRetrieval == RSCredentialRetrievalEnum.Store ? new CredentialsStoredInServer { ImpersonateAuthenticatedUser = dsDef.ImpersonateUserSpecified, UserName = dsDef.UserName, Password = dsDef.Password, UseAsWindowsCredentials = dsDef.WindowsCredentials } : null, DataSourceType = dsDef.Extension, IsOriginalConnectionStringExpressionBased = dsDef.OriginalConnectStringExpressionBased, IsEnabled = dsDef.Enabled, Path = parent, Name = name }; try { PortalAccessorV1.AddToCatalogItems(dataSource); } catch (Exception ex) { Logging.Log("Folder create failed: {0}", ex.Message); throw; } return(RSPortalAccessorV1.CreateFullPath(parent, name)); }
/// <summary> /// Creates data source definition object with given values /// </summary> /// <param name="extension">Extension To User for Data Source</param> /// <param name="connectString">Connection String - different format for different extension</param> /// <param name="enabled">Whether data source is enabled</param> /// <param name="prompt">Whether to prompt for credential</param> /// <param name="imperseronateUser">Is using impersonation</param> /// <param name="windowsCred">Is using Windows Credential</param> /// <param name="user">user name (name or domain\name)</param> /// <param name="password">password for above</param> /// <returns>RS Data Source Definition</returns> public RSDataSourceDefinition CreateDatasourceDefinition(string extension, string connectString, bool enabled, string prompt, bool imperseronateUser, bool windowsCred, string user, string password) { RSDataSourceDefinition definition = new RSDataSourceDefinition(); definition.CredentialRetrieval = RSCredentialRetrievalEnum.Store; definition.Extension = extension; definition.ConnectString = connectString; // connectString would look like below for SQL related extension for example // string.Format("Server={0};Database={1}", DSServer, Database); // if (TrustServerCertificate) // definition.ConnectString = string.Format("{0};TrustServerCertificate={1}", definition.ConnectString, TrustServerCertificate); definition.Enabled = enabled; definition.EnabledSpecified = enabled; definition.ImpersonateUserSpecified = imperseronateUser; definition.Prompt = prompt; definition.WindowsCredentials = windowsCred; definition.UserName = user; definition.Password = password; return(definition); }
/// <summary> /// Create Data Source On RS Server (NOTE: probably return catalog item instead of path only) /// </summary> /// <param name="name">Data Source Name</param> /// <param name="dsDef">Data Source Definition</param> /// <param name="parent">Parent Folder to Crate Data Source</param> /// <returns>Path to newly created datasource</returns> public virtual string CreateDataSource(string name, RSDataSourceDefinition dsDef, string parent) { RSCatalogItem dsItem = SoapAccessor.Management.CreateDataSource(name, parent, true, dsDef, null); return(dsItem.Path); }