public static string GetUseFederation(string federationName, ref FederationMemberDistribution member) { string tick = ""; if (member.FedType.Equals("uniqueidentifier")) { tick = "'"; } return("USE FEDERATION [" + federationName + "] (" + member.DistrubutionName + "=" + tick + member.Low + tick + ") WITH RESET, FILTERING=OFF"); }
public static FederationMemberDistribution GetRootTables(TargetServerInfo targetServer) { string sqlQuery = "SELECT s.name, t.name FROM sys.tables t" + " JOIN sys.schemas s ON t.schema_id = s.schema_id" + " JOIN sys.dm_db_partition_stats p ON t.object_id=p.object_id" + " WHERE p.index_id=1" + " ORDER BY s.name, t.name;"; FederationMemberDistribution md = new FederationMemberDistribution(); md.FedType = "root"; md.Low = ""; md.High = ""; md.DatabaseName = targetServer.RootDatabase; try { using (SqlConnection connection = new SqlConnection(targetServer.ConnectionStringRootDatabase)) { Retry.ExecuteRetryAction(() => { connection.Open(); using (SqlDataReader sdr = SqlHelper.ExecuteReader(connection, CommandType.Text, sqlQuery)) { if (sdr != null && !sdr.IsClosed) { while (sdr.Read()) { FederationTableInfo ti = new FederationTableInfo(); ti.Schema = sdr.GetString(0); ti.Table = sdr.GetString(1); ti.FederatedColumn = ""; md.Tables.Add(ti); } sdr.Close(); } } connection.Close(); }); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } return(md); }
public static string GetFederationMemberDatabaseName(string FederationName, FederationMemberDistribution member, string ConnectionStringRootDatabase) { string databaseName = ""; string use = GetUseFederation(FederationName, ref member); Retry.ExecuteRetryAction(() => { using (SqlConnection connection = new SqlConnection(ConnectionStringRootDatabase)) { Retry.ExecuteRetryAction(() => { connection.Open(); SqlHelper.ExecuteNonQuery(connection, CommandType.Text, use); databaseName = (string)SqlHelper.ExecuteScalar(connection, CommandType.Text, "SELECT DB_NAME()").ExecuteScalarReturnValue; }, () => { connection.Close(); }); } }); return(databaseName); }