从C#数据库中删除 [英] Deleting database from 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屋!