Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优化我的查询以避免sql server中的完整事务日志_Sql_Sql Server_Tsql_Transactions_Transaction Log - Fatal编程技术网

如何优化我的查询以避免sql server中的完整事务日志

如何优化我的查询以避免sql server中的完整事务日志,sql,sql-server,tsql,transactions,transaction-log,Sql,Sql Server,Tsql,Transactions,Transaction Log,我在Godaddy数据库服务器中发现我的数据库超出了限制,他们的支持团队告诉我这是因为完整的事务日志 由于我没有共享主机的管理权限,他们将其截断后,它在几周内又满了 他们告诉我,这是由于我的代码,并要求我审查我的代码,以优化它 但是现在我不明白回顾我的问题的意义是什么 我的查询中是否需要编写代码来避免完整的事务日志 查询中的成员时更新 我的代码是这样的 Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase dbHe

我在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();

如何在此代码中使用begin transaction和commit–

如果您的代码执行任何begin TRAN,请确保您也发出了commit TRAN。未提交的事务将使日志不断增长,即使您没有执行任何其他可能导致日志增长的操作。

如果满足应用程序的需要,则应将数据库更改为“简单恢复”。这限制了事务日志的大小。但是godaddy支持人员告诉我,在他们的共享主机上不允许这样做,并告诉我,我必须检查我的查询以优化它们。它不能“满”,但可以利用所有可用空间。是的,我想知道使我的查询不使用事务日志。。godaddy告诉我回顾一下你的问题。。我不知道该怎么做,你能提供你运行最频繁的查询的例子吗?重复的insert语句可以快速填充事务日志。我的代码如下:Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase dbHelper=new Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase(System.Configuration.ConfigurationManager.ConnectionString[“ABestoreConnectionString”].ToString());SqlCommand dbCommand=(SqlCommand)dbHelper.GetStoredProcCommand(“Admin_FAQD”);AddInParameter(dbCommand,“@FAQID”,SqlDbType.Int,FAQID);ExecuteNonQuery(dbCommand);返回true;}catch(Exception){throw;}如何使用此代码开始事务并提交抱歉。。我在下面的答案中写代码,因为当我在这里写评论时,它看起来像一团乱麻。谢谢,请看一下