public UnparametrizedWhereClausesPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Unparameterized Where Clauses", PluginDescription = "Unparameterized queries(ad-hoc queries) will cause more resource consumption (higher CPU and Memory usage of the the database server)."+ Environment.NewLine + " Also if you are calling these queries using the `Database.SqlQuery/ExecuteSqlCommand` method directly, be aware of possible SQL injection attacks." + Environment.NewLine + @"If you are using SQL Server, try enabling parameterization: -- Enabling Parameterization ALTER DATABASE dbName SET PARAMETERIZATION FORCED; -- Optimizing for Ad hoc Workloads sp_configure 'show advanced options',1; RECONFIGURE; sp_configure 'optimize for ad hoc workloads',1; RECONFIGURE;" + Environment.NewLine }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public SelectStarPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Select *", PluginDescription = "SELECT * makes the Table / Index Scan Monster come!" }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public CommandsByJoinsCountPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Commands By Joins Count", PluginDescription = "Visualizing the most expensive commands." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Visualizers; }
public FullTableScansPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Full Table Scans", PluginDescription = "Full Table Scans Plugin, represents the issued SQL commands containing `LIKE '%...'` by EF." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public CommandsByRequestIdPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Commands By Request IDs", PluginDescription = "Visualizing Requests Activities." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Visualizers; }
public StaticResourcesQueriesPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Static Resources Queries", PluginDescription = "Static Resources Queries Plugin, represents the issued queries from the static resources/files requests." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public ByExceptionPlugin() { PluginMetadata = new PluginMetadata { PluginName = "By Exceptions", PluginDescription = "By Exceptions Plugin, Collects the exceptional issued SQL commands by EF." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public FunctionCallsInWhereClausePlugin() { PluginMetadata = new PluginMetadata { PluginName = "Function Calls In Where Clause", PluginDescription = "When functions are used in the WHERE clause, this forces SQL Server to do a table scan or index scan to get the correct results instead of doing an index seek if there is an index that can be used." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public CommandsByTimePlugin() { PluginMetadata = new PluginMetadata { PluginName = "Commands Time Line", PluginDescription = "Visualizing Commands Time Line." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Visualizers; }
public ByUrlPlugin() { PluginMetadata = new PluginMetadata { PluginName = "By Urls", PluginDescription = "By Urls Plugin, represents the sorted issued SQL commands by Url." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Loggers; }
public ContextInMultipleThreadsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Context In Multiple Threads", PluginDescription = "ObjectContex and DbContext are not thread safe. Using a single ObjectContext in multiple threads will corrupt your data." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public InCorrectNullComparisonsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Incorrect Null Comparisons", PluginDescription = "Incorrect Null Comparisons: `select * from myTable where field1 = null`. It should be `select * from myTable where field1 IS null`." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public ApplicationAnnouncementsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Announcements", PluginDescription = "Latest news of the project." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Application; }
public DumperPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Save And Replay", PluginDescription = "Dumper Plugin writes all of the received JSON contents from the Web API to a file." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Loggers; }
public CommandsByRowsReturned() { PluginMetadata = new PluginMetadata { PluginName = "Commands By Rows Returned", PluginDescription = "Visualizing Excessive Number Of Rows Returned." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Visualizers; }
public MultipleContextPerRequestPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Multiple Contexts Per Request", PluginDescription = "Each new context, means creating a new connection without resuing the existing one." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public DuplicateJoinsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Duplicate Joins", PluginDescription = "Having duplicate joins to the same table, in the query." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public RequestEntityTooLargePlugin() { PluginMetadata = new PluginMetadata { PluginName = "Large Query Entities", PluginDescription = "The received SQL string size is too large (> 20 KB)." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public PossibleSqlInjectionsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Possible SQL Injections", PluginDescription = "Unparameterized queries using the `Database.SqlQuery/ExecuteSqlCommand` methods directly, could be target of possible SQL injection attacks." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public LongConnectionsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Long Connections", PluginDescription = "EF connections won’t be closed until the ObjectResult has been completely consumed or disposed. So if you are keeping the connection open, because the UI data binding is not done yet, there will be a lot of ASYNC_NETWORK_IO waits for the query at database side, which are hazardous." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public ConnectionsByRoundtripsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Connections By Roundtrips", PluginDescription = "Visualizing the most active connectins and possible incorrect lazy loadings." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Visualizers; }
public ByMethodsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "By Methods", PluginDescription = "By Methods Plugin, represents the issued SQL commands from diffrent methods of the system." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Loggers; }
public CommandsByExecutionTimePlugin() { PluginMetadata = new PluginMetadata { PluginName = "Commands By Execution Time", PluginDescription = "Visualizing the most time consuming commands." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Visualizers; }
public ArithmeticOverflowPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Arithmetic Overflow", PluginDescription = "Queries like `select sum(f1) from tbl1;` are suspected to `Arithmetic Overflow` errors." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public ApplicationExceptionsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Exceptions", PluginDescription = "Shows the current application's exceptions." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Application; }
public RawLoggerPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Raw Logger", PluginDescription = "RawLogger Plugin logs all of the received JSON contents from the Web API." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Loggers; }
public EFTrafficLoggerPlugin() { PluginMetadata = new PluginMetadata { PluginName = "By Contexts", PluginDescription = "By Contexts Plugin, sorts all of the EF interactions with the database by context." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Loggers; }
public DuplicateCommandsPerMethodPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Duplicate Commands Per Method", PluginDescription = "Duplicate commands per method are the sign of excessive lazy loading or possible multiple enumeration of IEnumerable. Try using `Include` or `ToList` methods to fix it." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }
public ByConnectionsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "By Connections", PluginDescription = "By Connections Plugin, represents the issued connections by EF." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Loggers; }
public UnboundedResultSetsPlugin() { PluginMetadata = new PluginMetadata { PluginName = "Unbounded Result Sets", PluginDescription = "Unbounded result set performs a query without explicitly limiting the number of returned results. "+ "These queries are the main cause of out of memory errors." }; PluginAuthor = new PluginAuthor { Name = "VahidN", Email = "", WebSiteUrl = "http://www.dotnettips.info" }; Category = PluginCategory.Alerts; }