コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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;
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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;
        }
コード例 #9
0
        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;
        }
コード例 #10
0
        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;
        }
コード例 #11
0
        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;
        }
コード例 #12
0
        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;
        }
コード例 #13
0
        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;
        }
コード例 #14
0
        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;
        }
コード例 #15
0
        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;
        }
コード例 #16
0
        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;
        }
コード例 #17
0
        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;
        }
コード例 #18
0
        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;
        }
コード例 #19
0
        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;
        }
コード例 #20
0
        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;
        }
コード例 #21
0
        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;
        }
コード例 #22
0
        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;
        }
コード例 #23
0
        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;
        }
コード例 #24
0
        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;
        }
コード例 #25
0
        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;
        }
コード例 #26
0
        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;
        }
コード例 #27
0
        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;
        }
コード例 #28
0
        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;
        }
コード例 #29
0
        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;
        }
コード例 #30
0
        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;
        }