从C#数据库中删除 [英] Deleting database from C#

查看:180
本文介绍了从C#数据库中删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有MSTEST测试过程中,我连接到​​我的本地SQL Server中的MDF文件,我不希望有去手工删除这些临时数据库我已经运行测试后设置50倍。 (我已经这样做了,我不喜欢它><)我是寻找一种方式从服务器删除数据库我在我的TestCleanup法期间与测试完成后,。我只需要在哪些SQL语句我会用做一些指导。



思考?



THX提前! :D



修改(由软件猴子,从OP的拒绝编辑俄德的答案)



下面是为我工作的代码:

  VAR服务器=新服务器(服务器名); //可以使用重载指定

的foreach(在server.Databases数据库DB)
{
如果(db.Name.ToLower()。包含(testDatabaseIdentifier))
{
databasesToDelete.Add(db.Name);
}
}
databasesToDelete.ForEach(X =>
{
数据库DB =新的数据库(服务器,X);
db.Refresh( );
db.Drop();
});


解决方案

看看的的 SMO (SQL Server管理对象)的.NET包装



这允许你管理从代码中的SQL Server,包括数据库删除的所有方面。



数据库对象拥有的 挂断 方法。



下面的代码是说明如何您可以使用对象模型,虽然我没有测试它:

  VAR服务器=新服务器(服务器名); //可以使用重载指定

的foreach(在server.Databases数据库DB)
{
如果(db.Name.ToLower()。包含(testDatabaseIdentifier))
{
databasesToDelete.Add(db.Name);
}
}
databasesToDelete.ForEach(X =>
{
数据库DB =新的数据库(服务器,X);
db.Refresh( );
db.Drop();
});


I have a MDF file that I'm attaching to my local SQL server during testing with MSTEST and I don't want to have to go delete those temporary databases by hand after I've run the test set 50 times. (I've already done that and I don't like it >.<) I'm look for a way to delete the database from the server after I'm done with the tests, during my TestCleanup method. I just need a little guidance on what SQL statements I would use to do this.

Thoughts?

Thx in advance! :D

EDIT (By Software Monkey, from OP's rejected edit to ODED's answer)

Here is the code which worked for me:

var server = new Server(serverName); // Can use overload that specifies 

foreach (Database db in server.Databases)
{
     if (db.Name.ToLower().Contains(testDatabaseIdentifier))
     {
          databasesToDelete.Add(db.Name);
     }
}
databasesToDelete.ForEach(x =>
{
     Database db = new Database(server, x);
     db.Refresh();
     db.Drop();
});

解决方案

Take a look at the SMO (SQL Server Management Objects) .NET wrappers.

These allow you to manage all aspects of SQL Server from code, including deleting of databases.

The database object has a Drop method.

The code below is to illustrate how you could use the object model, though I have not tested it:

var server = new Server(serverName); // Can use overload that specifies 

foreach (Database db in server.Databases)
{
     if (db.Name.ToLower().Contains(testDatabaseIdentifier))
     {
          databasesToDelete.Add(db.Name);
     }
}
databasesToDelete.ForEach(x =>
{
     Database db = new Database(server, x);
     db.Refresh();
     db.Drop();
});

这篇关于从C#数据库中删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆