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