小编Mic*_*ray的帖子

查询从Web执行时超时,但从SSMS执行时超快

我正在尝试在我维护的Web应用程序中调试SQL超时的来源.我有C#代码的源代码,所以我确切地知道正在运行什么代码.我已经将应用程序调试到执行超时的SQL代码的行,并且我在SQL分析器中观察运行的查询.

当此查询从Web执行时,它会在30秒后超时.但是,当我完全按照Profiler中显示的方式剪切/粘贴查询时,我将其放入SSMS并运行它,它几乎立即返回.我已经跟踪了ARITHABORT在Web正在使用的连接中设置为OFF的问题(也就是说,如果我在SSMS会话中关闭ARITHABORT,它会运行很长时间,如果我将其重新打开,那么它会运行很快).但是,阅读ARITHABORT的描述,它似乎并不适用......我只做一个简单的SELECT,并且根本没有执行任何算法......只有一个带有WHERE条件的INNER JOIN:

为什么ARITHABORT OFF会在此上下文中导致此行为?有什么办法可以改变SSMS对该连接的ARITHABORT设置吗?我正在使用SQL Server 2008.

sql-server ssms sql-server-2008 query-performance arithabort

41
推荐指数
3
解决办法
3万
查看次数

自动生成.NET崩溃转储

我知道如何使用ADPlus或DebugDiag生成Crash Dump文件,但我想知道是否有办法在客户的计算机上执行此操作而不安装这些工具...具体来说,我希望能够配置我的应用程序(例如,使用注册表值)在严重故障的情况下生成崩溃转储.更具体地说,我需要能够从C#应用程序执行此操作,但如果有必要,我不介意P/Invoke.谢谢!

.net c# crash-dumps

40
推荐指数
5
解决办法
5万
查看次数

如何确定哪个w3wp.exe进程属于哪个网站?

我有一个IIS6 Web服务器,托管两个应用程序池.有时候,其中一个w3wp进程会使CPU飙升一段时间,而且两个应用程序池似乎都会受到影响.我不确定哪一个是哪个,如果没有这些信息,我不知道应该责怪哪个应用程序.

如何判断哪个w3wp属于哪个App Pool?

iis-6 w3wp

25
推荐指数
2
解决办法
2万
查看次数

无法使用catch(...)捕获c ++异常

我有一个第三方库,有时会抛出异常.所以我决定将我的代码包装在try/catch(...)中,以便我可以记录有关发生异常的信息(没有具体的细节,只是它发生了.)

但由于某种原因,代码仍然崩溃.在客户端计算机上,它很难崩溃,并且在catch(...)中记录异常的代码永远不会被执行.如果我在我的调试/开发机器上运行它,我会看到弹出窗口询问我是否要调试.当我这样做时,它报告0xC0000005:访问冲突读取位置XXX.

奇怪的是,对于旧版本的第三方库,完全相同的代码可以捕获异常,并且记录异常的代码可以执行.(我在VS中验证了这一点,看着出现同样的情况.)

这是正在执行的伪代码:

pObject = pSystem->Get_pObject()
pSystem->DoSomethingThatMightDestroy_pObject();
try
{
    /*   Call to third party function that is throwing exception */
    pObject->SetValue(0);
}
catch (...)
{
    __DEBUG_LOG_POSITION__;  // A macro to log the current file line
    //  This code used to run in the older version of third-party library
    //  but the newer version just crashes before running the catch(...)
}
Run Code Online (Sandbox Code Playgroud)

所以我有两个问题:

  1. 第三方编译库的方式是否有一些变化,以至于我的代码无法捕获异常?(是的,如果我知道要告诉他们什么,我有可能让第三方做出必要的修改并为我重新编译.)

  2. 假设我无法让第三方修复它,我该怎么做才能捕获这些异常?我正在考虑......是否有某种方法可以确定pObject是否已被释放?

c++ exception-handling exception

14
推荐指数
2
解决办法
1万
查看次数

SQL中的最佳LIKE搜索

我有一个零件数据库,我将不断查询报价系统.零件数据库中有1,400,000多条记录.用户只是开始键入部件号,他们希望系统只能在几个字符后找到,所以我需要能够进行通配符搜索,例如:

SELECT NeededFields FROM Parts WHERE PartNumber LIKE 'ML%'
Run Code Online (Sandbox Code Playgroud)

我是否可以执行任何类型的优化以尝试从这种类型的查询中获得最大的性能?我将PartNumber字段编入索引,但我不确定这是否是我能得到的最好的.我愿意考虑将数据库中内置的备用索引结构与SQL索引分开.主键是Guid,但我需要这个用于复制,因为我使用的是特定的数据结构.

sql optimization search

7
推荐指数
1
解决办法
3442
查看次数

通用方法是不是选择最具体的构造函数签名?

当我使用带有泛型参数的方法来创建另一个对象时,泛型对象不会选择最具体的构造函数.这听起来令人困惑,所以这里有一些示例代码来证明我的意思......

任何人都可以解释为什么这个程序的输出是:

guid    <-- easy - no problem here
object  <-- WHY?  This should also be "guid"?!
Run Code Online (Sandbox Code Playgroud)

...以及如何使泛型Add<T>函数调用正确的构造函数C?这是代码:

void Main()
{
    B b = new B();

    C c = new C(Guid.Empty);
    b.Add<Guid>(Guid.Empty);
}

public class B
{
    List<C> cs = new List<C>();
    public void Add<T>(T v) { cs.Add(new C(v)); }
}

public class C
{
    public C(Guid c) { Console.WriteLine("guid"); }
    public C(object c) { Console.WriteLine("object"); }
}
Run Code Online (Sandbox Code Playgroud)

c# generics

7
推荐指数
1
解决办法
309
查看次数

SQL查询理论问题 - 单语句与多语句查询

当我编写SQL查询时,我发现自己常常认为"单一查询无法做到这一点".当发生这种情况时,我经常转向使用临时表(一种或另一种)的存储过程或多语句表值函数,最后简单地组合结果并返回结果表.

我想知道是否有人知道,仅仅作为理论问题,是否应该可以编写任何查询,将单个结果集作为单个查询(而不是多个语句)返回.显然,我忽略了代码可读性和可维护性等相关点,甚至可能是查询性能/效率.这更多是关于理论的 - 它可以做到......而且不用担心,当多语句在所有情况下更适合我的目的时,我当然不打算开始强迫自己编写单语句查询,但是它可能会让我思考是否有一个可行的方法来从单个查询获得结果.

我想一些参数是有序的 - 我正在考虑一个关系数据库(如MS SQL),其中的表遵循常见的最佳实践(例如所有具有主键的表等等).

注意:为了赢得"接受的答案",您需要提供明确的证明(参考网络资料或类似内容).

sql theory relational-algebra database-theory

6
推荐指数
1
解决办法
1693
查看次数

通用Linq订购功能?

我希望能够传入一个Func <T,?>,它允许我精确地选择如何对项目列表进行排序......我遇到的问题是返回类型可能会有所不同......所以例如我想要做这样的事情(不是生产代码):

Func<POline, string> poLineOrder
if (option) poLineOrder = poline => poline.PartNumber;
else poLineOrder = poline => poline.LineOrder;
var orderedLines = poLines.OrderBy(poLineOrder);
Run Code Online (Sandbox Code Playgroud)

这里的问题是,虽然PartNumber是一个字符串,但LineOrder是一个int,并且此代码不能编译.我有一种感觉,我将不得不构建一个表达式(?),但我似乎无法正确的语法.

(是的,我可以通过使用poline.LineOrder.ToString("D10")解决这个问题,但我在这里问更一般的问题...谢谢!)

-mdb

c# linq lambda

5
推荐指数
1
解决办法
2120
查看次数

如何在WiX中至少要求两个可选组件中的一个?

我正在使用WixUIFeatureTree为用户提供他们想要安装的应用程序的哪些组件的选项...我的一个功能有两个可选功能,其中至少必须安装其中一个才能使程序正常工作.我不想强迫用户安装任何一个,但我不知道如何强迫他们选择至少一个.

这是我目前WXS的相关部分:

    <Feature Id="Main" Title="Product Name" Level="1" Absent="disallow" Display="expand" AllowAdvertise="no"
             Description="This is the application, and is a required component"
             >
        <ComponentRef Id="Baseline" />
        <ComponentRef Id="Shortcuts" />
        <Feature Id="Option1" Title="Plugin #1" Level="2" Absent="allow" AllowAdvertise="no">
            <ComponentRef Id="Plugin1Component" />
        </Feature>
        <Feature Id="Option2" Title="Plugin #2" Level="3" Absent="allow" AllowAdvertise="no">
            <ComponentRef Id="Plugin2Component" />
        </Feature>
    </Feature>
Run Code Online (Sandbox Code Playgroud)

我猜我需要在序列的正确位置插入一些自定义动作,保证选择一个或另一个进行安装,但不知道如何做到这一点,或者它是否正确.所有帮助赞赏!

installer wix wix3

5
推荐指数
1
解决办法
2239
查看次数

SQL Double-Outer Join?

我有两个表A和B ... A和B可以通过一个公共列连接.A和B将在连接列上匹配一些行.但是A有一些B没有的行,B有一些A没有的行.

从A到B的LEFT OUTER JOIN将给出A中的所有行,为无法匹配的B列填充NULLS.RIGHT OUTER JOIN给出B中的所有行,为无法匹配的A列填充NULLS.

我想从A和B接收所有行,同时在仅在B中的行上为A列返回NULL,对于仅在A中的B列返回NULL.

我知道我可以使用UNION和1 INNER + 1 LEFT + 1 RIGHT进行此操作,但是有一个SELECT查询可以实现吗?

t-sql sql-server

5
推荐指数
1
解决办法
3760
查看次数