【问题标题】:How to optimize my queries to avoid full transaction log in sql server如何优化我的查询以避免 sql server 中的完整事务日志
【发布时间】:2016-06-15 23:32:08
【问题描述】:

我在 Godaddy 数据库服务器中发现我的数据库超出限制,他们的支持团队告诉我这是因为完整的事务日志

由于我对共享主机没有管理权限,他们将其截断后,几周后又满了

他们告诉我这是由于我的代码,并要求我审查我的代码以优化它

但现在我不明白查看我的查询是什么意思

在我的查询中是否需要编写任何代码以避免完整的事务日志

在查询成员时更新

.

我的代码是这样的

        Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase dbHelper = new Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase(System.Configuration.ConfigurationManager.ConnectionStrings["ABestoreConnectionString"].ToString());
        SqlCommand dbCommand = (SqlCommand)dbHelper.GetStoredProcCommand("Admin_FAQD");
        dbHelper.AddInParameter(dbCommand, "@FAQID", SqlDbType.Int, fAQID);
        dbHelper.ExecuteNonQuery(dbCommand);
        return true;

如何使用此代码开始事务和提交 -

我用来将数据从 excel 文件批量插入 SQL Server 表的另一个函数

     //series of commands to bulk copy data from the excel file into our sql table
     OleDbConnection oledbconn = new OleDbConnection(excelFileConnStr);
     OleDbCommand oledbcmd = new OleDbCommand(query, oledbconn);
     oledbconn.Open();
     OleDbDataReader dr = oledbcmd.ExecuteReader();
                        
     SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlConnStr, SqlBulkCopyOptions.CheckConstraints);

     bulkcopy.DestinationTableName = ssqltable;
     while (dr.Read())
     {
         bulkcopy.WriteToServer(dr);
     }
     oledbconn.Close();

如何使用此代码开始事务和提交 –

【问题讨论】:

  • 如果满足应用程序的需要,您应该将数据库更改为简单恢复。这限制了事务日志的大小。
  • 但是 godaddy 支持告诉我,这在他们的共享主机上是不允许的,并告诉我我必须检查我的查询以优化它们
  • 它不能“满”,但可以利用所有可用空间
  • 是的,我想知道让我的查询不要使用事务日志.. godaddy 告诉我查看您的查询.. 我不知道该怎么做
  • 您能提供您最常运行的查询的示例吗?例如。重复插入语句可以快速填满事务日志。

标签: sql sql-server tsql transactions transaction-log


【解决方案1】:

如果您的代码执行任何 BEGIN TRAN,请确保您也发出了 COMMIT TRAN。即使您没有做任何其他会导致日志增长的事情,未提交的事务也会保持日志增长。

【讨论】:

  • 我的代码是这样的 Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase dbHelper = new Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase(System.Configuration.ConfigurationManager.ConnectionStrings["ABestoreConnectionString" ].ToString()); SqlCommand dbCommand =(SqlCommand) dbHelper.GetStoredProcCommand("Admin_FAQD"); dbHelper.AddInParameter(dbCommand,"@FAQID",SqlDbType.Int,fAQID); dbHelper.ExecuteNonQuery(dbCommand); return true;} catch (Exception){throw ;} 如何使用此代码开始事务并提交
  • 对不起..我在下面的答案中写了代码,因为当我把它写在这里作为评论时,它看起来像一团糟谢谢请看一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 2015-05-01
相关资源
最近更新 更多