C#SMO数据库不日志创建

C#SMO数据库不日志创建

问题描述:

我有一个创建Microsoft.SqlServer.Management.Smo.Database类型的数据库集成测试:C#SMO数据库不日志创建

var defaultConnectionConnectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString(); 
var sqlConnection = new SqlConnection(defaultConnectionConnectionString); 
var serverConnection = new ServerConnection(sqlConnection); 
_server = new Server(serverConnection); 
_database = new Database(_server, _integrationTestingDatabaseName); 
_database.Create(); 

当我运行通过CLI为NUnit的,测试结束时,用SQL的集成测试创建数据库被转储到控制台。这混乱了输出,并不是我想在运行这个集成测试时看到的东西。我怎样才能阻止这种情况发生?

+1

当我运行上面的控制台应用程序(VS2015/Smo的12.0),我没有得到任何SQL输出。你是否也在控制台应用程序中看到相同的行为?这是否仅在使用NUnit CLI运行时才会发生?实际上,对于我来说,我希望看到生成的SQL记录!另外,你的Smo组件的版本是什么? – Subbu

+1

您是否打算回答上述问题? –

这是一个鹅的追逐,不能复制。

我猜可能有些混淆,也许你的脚本中有一个是SQL Print或者一些这样的红鲱鱼。因为执行此单元测试以通过Sql Management Objects创建SQL dB,而不是输出SQL创建脚本。

enter image description here

甚至直接在命令行中执行不记录SQL创建脚本。这里是摄制:

using NUnit.Framework; 
using ConsoleApplication1; 
using System.IO; 
using System.Diagnostics; 

[TestFixture] 
public class UnitTest1 
{  
    static FileStream objStream; 

    [SetUp] 
    public static void Setup() 
    { 
     objStream = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\AAA_Output.txt", FileMode.OpenOrCreate); 
     TextWriterTraceListener objTraceListener = new TextWriterTraceListener(objStream); 
     Trace.Listeners.Add(objTraceListener); 
     Trace.WriteLine("==================================="); 
     Trace.WriteLine("App Start:" + DateTime.Now); 
     Trace.WriteLine("==================================="); 
    } 

    [TestCase] 
    public void TestMethod1() 
    { 
     Program.CreateDB(); 
    } 

    [TearDown] 
    public static void TearDown() 
    { 
     Trace.Flush(); 
     objStream.Close(); 
    } 
} 

结果:

enter image description here