如何对ADO.NET连接的数据库执行直接SQL命令?
我想向SQL服务器发送DBCC SHRINKDATABASE
,以便在大的删除过程之后压缩当前的数据文件。函数ObjectContext::CreateQuery
在DBCC命令后返回解析器错误。有没有其他方法来缩小数据库文件,或者将SQL命令直接发送到SQL Server的其他方法?
答案 0 :(得分:3)
我只是将其作为原始SQL发送:
using (SqlCommand command = new SqlCommand("DBCC SHRINKDATABASE(0)", connection))
{
command.ExecuteNonQuery();
}
另一种方法是将DBCC SHRINKDATABASE
放入存储过程并从代码中调用存储过程。
答案 1 :(得分:0)
感谢Mark,我只需要弄清楚如何获得SqlConnection。 这是完整的源代码(使用扩展方法可以写得更好一些):
public ActionResult Optimize()
{
using (BXPartsEntities Entities = new BXPartsEntities())
{
System.Data.EntityClient.EntityConnection eConnection = Entities.Connection as System.Data.EntityClient.EntityConnection;
eConnection.Open();
var SqlConnection = eConnection.StoreConnection as SqlConnection;
if (SqlConnection == null)
throw new ArgumentException("StoreConnection shall be SQL Connection");
using (SqlCommand command = new SqlCommand("DBCC SHRINKDATABASE(0)", SqlConnection))
{
command.ExecuteNonQuery();
}
eConnection.Close();
}
return Content("Done");
}