小编Ror*_*ory的帖子

我可以阻止调用sp_reset_connection来提高性能吗?

我的探查器跟踪显示exec sp_reset_connection在每个sql批处理或过程调用之间调用.这是有原因的,但是如果我确信没有必要提高性能,我可以阻止它被调用吗?

更新:我认为这可以提高性能的原因有两个:

  1. SQL Server不需要重置连接状态.我认为这将是一个相对微不足道的改进.
  2. 减少网络延迟,因为客户端不需要发送exec sp_reset_connection,等待响应,然后发送它真正想要执行的任何sql.

第二个好处是我感兴趣的那个,因为在我的架构中,客户端有时与数据库有一定距离.如果每个sql批处理或rpc都需要双向往返,则会使任何网络延迟的影响加倍.消除这种双重调用可能会提高性能.

是的,我可以做很多其他事情来改善性能,比如重新构建应用程序,我是解决问题根本原因的忠实粉丝,但在这种情况下我只想知道是否可以阻止sp_reset_connection被称为.然后我可以测试是否有任何性能改进,并正确评估不调用它的风险.

这提示了另一个问题:与sp_reset_connection的网络通信是否真的如上所述?即客户端是否发送exec sp_reset_connection,等待响应,然后发送真正的SQL?或者这一切都在一块?

sql-server performance sp-reset-connection

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

在连接池关闭之前,sql server连接必须闲置多长时间?

我有一个客户端 - 服务器应用程序,使用.NET SqlClient数据提供程序连接到SQL服务器 - 非常标准的东西.默认情况下,在连接池管理器关闭数据库连接并将其从池中删除之前,连接必须有多长时间空闲?有什么设置控制这个?

这个MSDN文档只说

连接池在空闲了很长时间后,或者如果池中检测到与服务器的连接已被切断,则会从池中删除连接.

sql-server connection-pooling

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

将正则表达式语法扩展为"不包含文本XYZ"

我有一个应用程序,用户可以在许多地方指定正则表达式.这些在运行应用程序时用于检查文本(例如URL和HTML)是否与正则表达式匹配.通常,用户希望能够说出文本与ABC匹配的位置并且与XYZ不匹配.为了方便他们这样做,我想在我的应用程序中扩展正则表达式语法,并说出' 并且不包含模式 '.有什么建议可以做到这一点吗?

我的应用程序是用C#.NET 3.5编写的.

我的计划(在我得到这个问题的真棒答案之前......)

目前我正在考虑使用¬字符:在¬字符是正常正则表达式之前的任何内容,¬字符之后的任何内容都是在要测试的文本中无法匹配的正则表达式.

所以我可能会使用像这样(人为的)示例的一些正则表达式:

on (this|that|these) day(s)?¬(every|all) day(s) ?
Run Code Online (Sandbox Code Playgroud)

例如,在这一天,男人说...... "但是在这一天和之后的每一天都不会匹配...... ".

在我处理正则表达式的代码中,我将简单地拆分正则表达式的两个部分并分别处理它们,例如:

    public bool IsMatchExtended(string textToTest, string extendedRegex)
    {
        int notPosition = extendedRegex.IndexOf('¬');

        // Just a normal regex:
        if (notPosition==-1)
            return Regex.IsMatch(textToTest, extendedRegex);

        // Use a positive (normal) regex and a negative one
        string positiveRegex = extendedRegex.Substring(0, notPosition);
        string negativeRegex = extendedRegex.Substring(notPosition + 1, extendedRegex.Length - notPosition - 1);

        return Regex.IsMatch(textToTest, positiveRegex) && !Regex.IsMatch(textToTest, negativeRegex);
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# regex regex-negation

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

从c#.net代码返回S_OK或E_FAIL的值是多少?

我正在实现一个COM接口,它应该返回int值S_OKE_FAIL.我S_OK可以回复,因为我从另一个调用(Marshal.QueryInterface)得到了回复,但如果我想返回一个失败值,我会使用什么实际值E_FAIL

(这是一个基本的基本问题,很难找到答案)

假设它是Win32 API中定义的特定数字,是否可以在.net代码中使用它而不声明我自己的常量?

谢谢!

更新(回答如下):

也许我是一个完整的笨蛋,但我遇到了这个问题.根据我的Platform SDK,HRESULT是一个LONG,它是一个32位有符号整数,对吧?所以可能的值-2,147,483,648到2,147,483,647.但是0x80004005 = 2,147,500,037,大于2,147,483,647.是什么赋予了!?

这意味着当我尝试将其放入我的代码中时:

const int E_FAIL = 0x80004005;
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误无法将类型'uint'隐式转换为'int'.

更新2:

我要宣布它是这样的:

const int E_FAIL = -2147467259;
Run Code Online (Sandbox Code Playgroud)

因为如果我尝试做这样的事情:

const UInt32 E_FAIL = 0x80004005;
return (Int32)E_FAIL;
Run Code Online (Sandbox Code Playgroud)

我得到一个编译器错误常量值'2147500037'无法转换为'int'(使用'unchecked'语法来覆盖)

唷!谁知道声明一个标准的返回值是多么棘手....某处必须有一个潜伏的类,我应该使用像返回Win32ReturnCodes.E _FAIL; ...... 叹息

终极解决方案:

我现在通过从pinvoke.net获取(大量但非常有用)HRESULT枚举并将其添加到我的解决方案中来做到这一点.然后使用它像这样:

return HRESULT.S_OK;
Run Code Online (Sandbox Code Playgroud)

.net c# com return-value

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

禁用默认按钮或在asp.net中输入密钥c#

我有一个用户在条形码中扫描的表单,条形码阅读器会自动在值中输入回车,导致表单提交,因为浏览器选择第一个按钮作为默认值.如果在该文本框中输入值时按下回车键,如何禁用发生的任何事情?

javascript c# asp.net

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

点击链接后javascript何时停止在页面上运行?

我有一个运行各种JavaScript代码的页面,包括调用setTimeout().如果用户单击链接以导航到另一个页面,此页面上的javascript何时停止运行,因此将不再调用由setTimeout调用的代码?例如

  • 一旦点击链接(我知道这是错的)
  • 当浏览器开始接收新页面时
  • 还有其他一点吗?

这对于不同的主流浏览器有何不同?

背景

我想知道这主要是出于利益而不是解决任何特定问题.促使我思考这个问题的问题是,当用户点击页面上的特定链接时,我想做点什么.我想执行ajax调用并处理结果,但是我不太关心它是否在页面卸载之前完成.所以我会在链接点击时触发一个setTimeout()然后如果我很幸运它会完成但是如果我不是它就不会.我想知道在什么情况下它会起作用.虽然可能有其他解决方案来解决这个问题,但我不想解决问题,我只想知道问题的答案.

javascript

11
推荐指数
1
解决办法
400
查看次数

如何使窗口具有任务栏文本但没有标题栏

如何让我的窗口没有标题栏,但在任务栏中显示一些描述性文字?如果你设置Form的.Text属性,那么.net给它一个标题栏,我不想要它.

        this.ControlBox = false;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
        this.MaximizeBox = false;
        this.MinimizeBox = false;
        this.ShowInTaskbar = true;
        this.Text = "My title for task bar";
Run Code Online (Sandbox Code Playgroud)

我找到了一个部分解决方案,以覆盖CreateParams:

    protected override System.Windows.Forms.CreateParams CreateParams
    {
        get
        {
            System.Windows.Forms.CreateParams cp = base.CreateParams;
            cp.Style &= ~0x00C00000; // WS_CAPTION
            return cp;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然而,这会导致我的窗口被调整大小,好像它们有一个标题栏,即它比它应该更高.这有什么好的解决方案吗?

.net c# winforms

10
推荐指数
2
解决办法
6832
查看次数

给定另一个日期的最简单方法是创建一个月的第一天

在SQL Server中,根据另一个日期时间,使日期时间代表本月的第一个的最简单/最简洁的方法是什么?例如,我有一个变量或列,2005年3月3日14:23我希望得到1-Mar-2005 00:00(作为日期时间,而不是varchar)

sql sql-server datetime date

9
推荐指数
2
解决办法
9168
查看次数

如何在连接网络时以及用户登录时接收事件

我有一个运行的服务,我希望在以下情况下收到通知:

a)网络已连接.

b)当用户登录机器时.

我怎样才能做到这一点?(C#.NET 2.0)

.net c# networking events

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

如何将文件截断到一定的大小但保留结束部分?

我有一个文本文件随着时间的推移附加,并定期我想将其截断到一定的大小,例如10MB,但保留最后10MB而不是第一个.

有没有聪明的方法来做到这一点?我猜我应该寻找正确的点,从那里读到一个新文件,删除旧文件并将新文件重命名为旧名称.有更好的想法或示例代码吗?理想情况下,我不会将整个文件读入内存,因为文件可能很大.

请不要使用Log4Net等建议

.net c# text-files

9
推荐指数
1
解决办法
3654
查看次数