簡體   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