Пример #1
0
        private DatabaseConnection SetUpDatabaseConnection(SqlDataReader reader)
        {
            var connection = new DatabaseConnection
            {
                Id = reader.SafeValue("Id", 0),
                DatabaseName = reader.SafeValue("DatabaseName", ""),
                Host = reader.SafeValue("Host", ""),
                Password = reader.SafeValue("Password", ""),
                UserName = reader.SafeValue("UserName", "")
            };

            return connection;
        }
Пример #2
0
 public void can_parse_database()
 {
     var dC = new DatabaseConnection
     {
         DatabaseName = "SomeDatabaseName",
         Host = "SomeServerNameOrIp",
         Password = "******",
         UserName = "******"
     };
     var sqlParser = new SqlParser();
     List<TestResult> results = sqlParser.Parse(dC);
     foreach (
         TestResult result in results.Where(result => result.Errors == null || result.Errors.Errors.Count > 0))
     {
         Logger.Log(result);
     }
 }
Пример #3
0
        public List<TestResult> Parse(DatabaseConnection connection)
        {
            var testResults = new List<TestResult>();
            var sourceConnection = new ServerConnection(connection.Host, connection.UserName, connection.Password);
            var sourceServer = new Server(sourceConnection);
            Database sourceDatabase = sourceServer.Databases[connection.DatabaseName];
            StoredProcedureCollection sps = sourceDatabase.StoredProcedures;
            UserDefinedFunctionCollection udfs = sourceDatabase.UserDefinedFunctions;
            ViewCollection views = sourceDatabase.Views;
            foreach (StoredProcedure storedProcedure in sps.Cast<StoredProcedure>())
            {
                try
                {
                    string header = "";
                    string body = "";
                    try
                    {
                        header = storedProcedure.TextHeader;
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine(exception);
                    }
                    try
                    {
                        body = storedProcedure.TextBody;
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine(exception);
                    }
                    string sprocText = string.Format("{0}{1}", header, body);
                    var options = new ParseOptions {CompatibilityLevel = DatabaseCompatibilityLevel.Version110};
                    ParseResult result = Parser.Parse(sprocText, options);
                    List<string> errors = result.Errors.Select(error => error.Message).ToList();
                    var testResultError = new TestResultError(errors);
                    var testResult = new TestResult
                    {
                        Database = connection.DatabaseName,
                        Errors = testResultError,
                        Server = connection.Host,
                        ObjectName = storedProcedure.Name
                    };
                    testResults.Add(testResult);
                }
                catch (Exception exception)
                {
                    var testResult = new TestResult
                    {
                        Database = connection.DatabaseName,
                        Errors = null,
                        Server = connection.Host,
                        ObjectName = storedProcedure.Name,
                        Exception = exception.ToString()
                    };
                    testResults.Add(testResult);
                }
            }

            foreach (UserDefinedFunction userDefinedFunction in udfs.Cast<UserDefinedFunction>())
            {
                try
                {
                    string header = "";
                    string body = "";
                    try
                    {
                        header = userDefinedFunction.TextHeader;
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine(exception);
                    }
                    try
                    {
                        body = userDefinedFunction.TextBody;
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine(exception);
                    }
                    string funcText = string.Format("{0}{1}", header, body);
                    var options = new ParseOptions {CompatibilityLevel = DatabaseCompatibilityLevel.Version110};
                    ParseResult result = Parser.Parse(funcText, options);
                    List<string> errors = result.Errors.Select(error => error.Message).ToList();
                    var testResultError = new TestResultError(errors);
                    var testResult = new TestResult
                    {
                        Database = connection.DatabaseName,
                        Errors = testResultError,
                        Server = connection.Host,
                        ObjectName = userDefinedFunction.Name
                    };
                    testResults.Add(testResult);
                }
                catch (Exception exception)
                {
                    var testResult = new TestResult
                    {
                        Database = connection.DatabaseName,
                        Errors = null,
                        Server = connection.Host,
                        ObjectName = userDefinedFunction.Name,
                        Exception = exception.ToString()
                    };
                    testResults.Add(testResult);
                }
            }

            foreach (View view in views.Cast<View>())
            {
                try
                {
                    string header = "";
                    string body = "";
                    try
                    {
                        header = view.TextHeader;
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine(exception);
                    }
                    try
                    {
                        body = view.TextBody;
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine(exception);
                    }
                    string viewText = string.Format("{0}{1}", header, body);
                    var options = new ParseOptions {CompatibilityLevel = DatabaseCompatibilityLevel.Version110};
                    ParseResult result = Parser.Parse(viewText, options);
                    List<string> errors = result.Errors.Select(error => error.Message).ToList();
                    var testResultError = new TestResultError(errors);
                    var testResult = new TestResult
                    {
                        Database = connection.DatabaseName,
                        Errors = testResultError,
                        Server = connection.Host,
                        ObjectName = view.Name
                    };
                    testResults.Add(testResult);
                }
                catch (Exception exception)
                {
                    var testResult = new TestResult
                    {
                        Database = connection.DatabaseName,
                        Errors = null,
                        Server = connection.Host,
                        ObjectName = view.Name,
                        Exception = exception.ToString()
                    };
                    testResults.Add(testResult);
                }
            }

            return testResults;
        }