通过Ado.net连接将shrink命令发送到Microsoft SQL数据库文件

时间:2010-03-29 23:00:42

标签: sql ado.net

如何对ADO.NET连接的数据库执行直接SQL命令? 我想向SQL服务器发送DBCC SHRINKDATABASE,以便在大的删除过程之后压缩当前的数据文件。函数ObjectContext::CreateQuery在DBCC命令后返回解析器错误。有没有其他方法来缩小数据库文件,或者将SQL命令直接发送到SQL Server的其他方法?

2 个答案:

答案 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");
    }