(SQL SERVER 2008)如果在TransactionScope(.Complete())中发生事务超时错误,您是否希望回滚事务?
更新:
错误实际上是在结束大括号(即.Dispose())中抛出,而不是.Complete().完整错误是:
The transaction has aborted. System.Transactions.TransactionAbortedException TransactionAbortedException System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.TimeoutException: Transaction Timeout
--- End of inner exception stack trace ---
at System.Transactions.TransactionStateAborted.BeginCommit(InternalTransaction tx, Boolean asyncCommit, AsyncCallback asyncCallback, Object asyncState)
at System.Transactions.CommittableTransaction.Commit()
at System.Transactions.TransactionScope.InternalDispose()
at System.Transactions.TransactionScope.Dispose()
Run Code Online (Sandbox Code Playgroud)
据我所知,事务没有回滚,表格保持锁定,直到我对SPID/session_id发出了KILL.
我使用DBCC OPENTRAN获取最早的事务,然后杀死它.我已经尝试了KILL WITH STATUS但是收到一条消息,说明没有任何状态可用,因为没有回滚.sys.dm_exec_sessions中SPID/session_id的状态为"正在休眠".代码段:
try
{
using (var transaction = new TransactionScope())
{
LOTS OF WORK CARRIED OUT WITH LINQ ENTITIES/SubmitChanges() etc.
transaction.Complete(); //Transaction timeout
}
return result;
}
catch (Exception ex)
{
logger.ErrorException(ex.Message, ex);
result.Fail(ex.Message); …Run Code Online (Sandbox Code Playgroud) 是否可以在DataGridView中执行以下操作:
在同一列中,我想更改DataGridViewTextBoxColumn和DataGridViewComboBoxColumn之间每行的控件类型?
(这是因为有时我想显示一个下拉列表,有时我只想让用户输入一个写意值).
谢谢,
PS我正在使用C#
是否可以通过使用类的文本名称将对象设置为类的新实例?
我将拥有一个类库,根据其他变量,我想在运行时获取这些类之一。
例如,我有“ CTest1”,“ CTest2”,“ CTest3”
我将具有类似于下面的功能
Function GetTestClass(lngClassNo as long) as Object
Dim strClassName as String
strClassName = "CTest" & CStr(lngClassNo)
Set GetTestClass = New instance of class(strClassName)
End Function
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用FtpWebRequest上传一些文件.这适用于小文件(比如<2MB),但是当我尝试加载16MB文件时,文件上传成功,但是当我调用request.GetRequestStream().关闭时,代码挂起(如果超时低则超时)足够).
我可能只是a)没有关闭它和b)没有费心从服务器得到响应,但这似乎不对!请参阅下面的代码(使用SSL与否,出现同样的问题.)
output.Close()是挂起的行....
public static void SendFileViaFtp(string file, string url, bool useSsl, ICredentials credentials)
{
var request = (FtpWebRequest)WebRequest.Create(url + Path.GetFileName(file));
request.EnableSsl = useSsl;
request.UseBinary = true;
request.Credentials = credentials;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Timeout = 10000000;
request.ReadWriteTimeout = 10000000;
request.KeepAlive = true;
var input = File.Open(file, FileMode.Open);
var output = request.GetRequestStream();
var buffer = new byte[1024];
var lastBytesRead = -1;
var i = 0;
while (lastBytesRead != 0)
{
i++;
lastBytesRead = input.Read(buffer, 0, 1024);
Debug.WriteLine(lastBytesRead + " " + …Run Code Online (Sandbox Code Playgroud) 在已经构建了几个mda库文件,然后我从我的主Access应用程序引用(即使用IDE中的工具 - >引用).
有没有办法可以使这些参考相对而不是绝对.我问的原因是,如果所有三个文件(主应用程序和两个mda文件)可以简单地放在任何目录中并且无需更改引用即可工作,这样可以很容易地在用户的计算机上进行设置. .
谢谢
有没有人有任何使用Access 2007与以前版本的Access(即mdb文件)的经验.
我们已经升级,但仍在使用mdb格式.我们的一些代码(特别是Docmd.TransferDatabase acImportReport)现在非常慢.
我尝试了初始测试并将我们的客户端mdb转换为accdb,上面的TransferDatabase似乎表现更好.
我现在想知道我们是否应该咬紧牙关并转换构成应用程序的所有其他文件.复制或用户级安全性似乎不再是旧版本的新版本的唯一限制.我们有一个客户端mdb,三个后端数据库,然后每个3000 mdbs包含一个报告(不要问!).
新版本的执行速度是否比旧版本快 - 特别是在已经困难的网络上?
我们正在评估Gembox作为Aspose的替代品.我认为我会失明,因为我不能做的一件事就是轻松获取ExcelCell的地址(例如"B4").
例如,在迭代单元格时,我们可能会遇到意外的值,并希望告诉用户错误的位置.
var dodgyCell = sheet.Cells[rowIndex, colIndex];
Run Code Online (Sandbox Code Playgroud)
我找到的最佳解决方法是创建一个单元格的CellRange然后使用startposition.即:
var cr = sheet.Cells.GetSubrangeAbsolute(rowIndex, colIndex, rowIndex, colIndex);
var message = "Dodgy value was found in cell " + cr.StartPosition
Run Code Online (Sandbox Code Playgroud)
当然必须有一个更简单的方法吗?
干杯
有没有人知道一种优雅的方法来获取数字的小数部分?特别是我希望获得小数点后的确切位数,以便可以适当地格式化数字.我想知道如果没有任何类型的字符串提取使用文化特定的小数分隔符,有没有做到这一点....
例如
98.0将格式化为98
98.20将格式化为98.2
98.2765将格式化为98.2765等.
c# ×5
excel ×2
ms-access ×2
vba ×2
.net ×1
access-vba ×1
datagridview ×1
decimal ×1
numbers ×1
sql-server ×1
winforms ×1