public virtual void Server_Urn_has_Name_matching_InstanceName() { var connection = TestContext.GetTestConnection(); var server = new Management.Smo.Server(connection); Assert.That(server.Urn.Value, Is.EqualTo($"Server[@Name='{Urn.EscapeString(connection.TrueName)}']"), "Server URN"); }
/// <summary> /// creates a new database with a random name, runs the action, and drops the database /// </summary> /// <param name="context"></param> /// <param name="action"></param> /// <param name="preCreateAction"></param> public static void ExecuteWithDbDrop(this VisualStudio.TestTools.UnitTesting.TestContext context, Action <Database> action, Action <Database> preCreateAction = null) { var dbName = string.Format("{0}{1}", context.TestName, new Random().Next()); var serverConnection = context.GetTestConnection(); var server = new Management.Smo.Server(serverConnection); var database = new Database(server, dbName); preCreateAction?.Invoke(database); database.Create(); try { action(database); } finally { try { database.Drop(); } catch (Exception e) { Trace.TraceError("Unable to drop database {0}: {1}", dbName, e); } } }
public void Collection_iteration_is_faster_with_SetDefaultInitFields() { using (var connectionMetrics = ConnectionMetrics.SetupMeasuredConnection(TestContext, 50)) { var server = new Management.Smo.Server(connectionMetrics.ServerConnection); var database = server.Databases[TestContext.GetTestDatabaseName()]; connectionMetrics.Reset(); foreach (Table table in database.Tables) { // Accessing FileGroup triggers a query to fetch it Trace.TraceInformation( $"Unoptimized table Name: {table.Name}\tSchema:{table.Schema}\tFileGroup:{table.FileGroup}"); } var unoptimizedMetrics = (QueryCount : connectionMetrics.QueryCount, BytesSent : connectionMetrics.BytesSent, BytesRead : connectionMetrics.BytesRead, ConnectionCount : connectionMetrics.ConnectionCount); Trace.TraceInformation(string.Join($"{Environment.NewLine}\t", new[] { "Unoptimized metrics:", $"QueryCount:{unoptimizedMetrics.QueryCount}", $"ConnectionCount:{unoptimizedMetrics.ConnectionCount}", $"BytesSent:{unoptimizedMetrics.BytesSent}", $"BytesRead:{unoptimizedMetrics.BytesRead}" })); connectionMetrics.Reset(); server.SetDefaultInitFields(typeof(Table), "Name", "Schema", "FileGroup"); database.Tables.Refresh(); foreach (Table table in database.Tables) { // The FileGroup property is already populated, so no extra query is needed Trace.TraceInformation( $"Optimized table Name: {table.Name}\tSchema:{table.Schema}\tFileGroup:{table.FileGroup}"); } var optimizedMetrics = (QueryCount : connectionMetrics.QueryCount, BytesSent : connectionMetrics.BytesSent, BytesRead : connectionMetrics.BytesRead, ConnectionCount : connectionMetrics.ConnectionCount); Trace.TraceInformation(string.Join($"{Environment.NewLine}\t", new[] { "Optimized Metrics:", $"QueryCount:{optimizedMetrics.QueryCount}", $"ConnectionCount:{optimizedMetrics.ConnectionCount}", $"BytesSent:{optimizedMetrics.BytesSent}", $"BytesRead:{optimizedMetrics.BytesRead}" })); Assert.That(optimizedMetrics.BytesRead, Is.LessThan(unoptimizedMetrics.BytesRead), "BytesRead"); Assert.That(optimizedMetrics.BytesSent, Is.LessThan(unoptimizedMetrics.BytesSent), "BytesSent"); Assert.That(optimizedMetrics.ConnectionCount, Is.AtMost(unoptimizedMetrics.ConnectionCount), "ConnectionCount"); Assert.That(optimizedMetrics.QueryCount, Is.LessThan(unoptimizedMetrics.QueryCount), "QueryCount"); } }
public virtual void Urn_attribute_values_require_escaping() { var connection = TestContext.GetTestConnection(); var server = new Management.Smo.Server(connection); TestContext.ExecuteWithDbDrop((database) => { var table = new Table(database, "Name'With'Quotes"); table.Columns.Add(new Column(table, "col1", DataType.Int)); table.Create(); Assert.That(table.Urn.GetNameForType(Table.UrnSuffix), Is.EqualTo("Name'With'Quotes"), "Urn Value"); Assert.Throws <FailedOperationException>(() => table = (Table)server.GetSmoObject( $"Server/Database[@Name='{database.Name}']/Table[@Name='Name'With'Quotes']")); table = (Table)server.GetSmoObject( $"Server/Database[@Name='{database.Name}']/Table[@Name='{Urn.EscapeString("Name'With'Quotes")}']"); Assert.That(table.Name, Is.EqualTo("Name'With'Quotes"), "Table with escaped name"); }); }