[英]Executing Shrink on SQL Server database using command from linq-to-sql
我正在寻找一种清除事务日志的方法; 特别是,我想缩小日志。 我知道想要这样做有一些不好的理由,但在这种情况下,这是有充分理由的。
我在 SQL Server 管理中运行了这个:
DBCC SHRINKFILE(DBName_log)
DBCC SHRINKFILE(DBName)
这就是我需要的。 现在我想使用 Linq-To-SQL 从代码中执行此命令,如下所示:
using (MyDC TheDC = new MyDC())
{
TheDC.ExecuteCommand(....);
}
我需要发送什么命令才能在数据库中执行这两个操作?
您的DbContext
公开了一个System.Data.Entity.Database
提供了一个方法ExecuteSqlCommand()
,该方法有几个重载。
这是 MSDN 文章中的文档。
对数据库执行给定的 DDL/DML 命令。 与任何接受 SQL 的 API 一样,参数化任何用户输入以防止 SQL 注入攻击很重要。 您可以在 SQL 查询字符串中包含参数占位符,然后提供参数值作为附加参数。 您提供的任何参数值都将自动转换为 DbParameter。
根据您的需要,我将使用以下内容:
context.Database.ExecuteSqlCommand("DBCC SHRINKFILE(DBName_log)" ... );
该文档还继续解释如何绑定参数,为了提高性能,我强烈建议您在对 SQL Server 或 Oracle 执行匿名查询时这样做。
或者,您也可以构造一个 DbParameter 并将其提供给 SqlQuery。 这允许您在 SQL 查询字符串中使用命名参数。
再次,根据您的要求:
context.Database.ExecuteSqlCommand(
"DBCC SHRINKFILE(@file)",
new SqlParameter("@file", DBName_log)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.