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的集成测试创建数据库被转储到控制台。这混乱了输出,并不是我想在运行这个集成测试时看到的东西。我怎样才能阻止这种情况发生?
答
这是一个鹅的追逐,不能复制。
我猜可能有些混淆,也许你的脚本中有一个是SQL Print
或者一些这样的红鲱鱼。因为执行此单元测试以通过Sql Management Objects创建SQL dB,而不是输出SQL创建脚本。
甚至直接在命令行中执行不记录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();
}
}
结果:
当我运行上面的控制台应用程序(VS2015/Smo的12.0),我没有得到任何SQL输出。你是否也在控制台应用程序中看到相同的行为?这是否仅在使用NUnit CLI运行时才会发生?实际上,对于我来说,我希望看到生成的SQL记录!另外,你的Smo组件的版本是什么? – Subbu
您是否打算回答上述问题? –