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); }
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); } } } }
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); } } } }