代码之家  ›  专栏  ›  技术社区  ›  user287107

通过ADO.NET连接向Microsoft SQL数据库文件发送SHRINK命令

  •  3
  • user287107  · 技术社区  · 14 年前

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

    2 回复  |  直到 14 年前
        1
  •  3
  •   Mark Byers    14 年前

    我只将此作为原始SQL发送:

    using (SqlCommand command = new SqlCommand("DBCC SHRINKDATABASE(0)", connection))
    {
        command.ExecuteNonQuery();
    }
    

    另一种方法是 DBCC SHRINKDATABASE 在存储过程中,并从代码中调用存储过程。

        2
  •  0
  •   user287107    14 年前

    谢谢马克,我只是想知道如何获得sqlconnection。 下面是完整的源代码(使用扩展方法可以更好地编写ok):

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