Exemple #1
0
        static public void TestParsing(string sql, Func <TSqlParser, ParserRuleContext> parse)
        {
            TSqlParser parser = TSqlUtilities.GetParser(sql);

            parser.AddErrorListener(new ErrorListener());
            var parsed = parse(parser);

            Assert.AreEqual(0, parser.NumberOfSyntaxErrors);
            Assert.AreEqual(sql.Length - 1, parsed.Stop.StopIndex);
        }
Exemple #2
0
        public void ResetData()
        {
            using (var dbContext = DbContext())
            {
                // delete data
                dbContext.Database.ExecuteSqlCommand(@"
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
EXEC sp_MSForEachTable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL'");

                if (DataScript != null)
                {
                    // run the initial data script
                    foreach (var(batch, batchSql) in TSqlUtilities.GetBatches(DataScript))
                    {
                        dbContext.Database.ExecuteSqlCommand(batchSql);
                    }
                }
            }
        }
Exemple #3
0
        internal void Create(string schemaScript, Variant variant)
        {
            using (var dbContext = DbContext())
            {
                dbContext.Database.EnsureCreated();

                if (variant == Variant.MemoryOptimized)
                {
                    var databaseFiles = dbContext.DatabaseFiles.FromSql("SELECT * FROM sys.database_files").ToList();

                    var builder             = new SqlConnectionStringBuilder(ConnectionString);
                    var turnAutoCloseOffSql = $"ALTER DATABASE [{builder.InitialCatalog}]  SET AUTO_CLOSE OFF";
                    var addFilegroupSql     = $"ALTER DATABASE [{builder.InitialCatalog}] ADD FILEGROUP memory_optimized CONTAINS MEMORY_OPTIMIZED_DATA";
                    var addFileSql          = $"ALTER DATABASE [{builder.InitialCatalog}] ADD FILE (name='memory_optimized_file', filename='{databaseFiles.First().PhysicalName}.mem') TO FILEGROUP memory_optimized";
                    dbContext.Database.ExecuteSqlCommand(turnAutoCloseOffSql);
                    dbContext.Database.ExecuteSqlCommand(addFilegroupSql);
                    dbContext.Database.ExecuteSqlCommand(addFileSql);
                }

                foreach (var(batch, batchSql) in TSqlUtilities.GetBatches(schemaScript))
                {
                    var sql = batchSql;
                    if (variant == Variant.MemoryOptimized)
                    {
                        var visitor = new MemoryOptimizedVisitor();
                        visitor.Visit(batch);
                        sql = visitor.Transform(batchSql, batch.Start.StartIndex);
                    }

                    try
                    {
                        dbContext.Database.ExecuteSqlCommand(sql);
                    }
                    catch (Exception exception)
                    {
                        throw new Exception($"Failed executing SQL command\n{sql}", exception);
                    }
                }
            }
        }