繁体   English   中英

使用来自 linq-to-sql 的命令在 SQL Server 数据库上执行收缩

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM