我们正在尝试诊断复杂存储过程的缓慢(它有几个巨大的查询).
当我们从ASP.NET调用SP时,需要5秒钟.
当我们从SQL Management Studio(仅使用EXEC)调用它时,需要0.05秒.
我们已经在许多不同的方式和环境中持续测试了这种行为.
这是使用C#.NET.该数据库是MS SQL Server 2012.
问题在于网络应用程序,但我们编写了一个小型控制台应用程序作为测试工具,行为是相同的.
1)我们在C#.NET控制台应用程序中计算经过的时间,如下所示:
stopwatch.Start();
rdr = cmd.ExecuteReader();
stopwatch.Stop();
Run Code Online (Sandbox Code Playgroud)
2)我们通过在查询之前和之后调用GETDATE()来计算SQL过程中的经过时间,然后将这些时间存储在一个小表中.我们可以在SQL Mgmt Studio中查询该表,以查看SP内部的查询所花费的时间.
通过这种方式,我们可以看到SQL与整体花费了多少时间,其中99%用于SQL.
但是,如果SQL Mgmt Studio中的速度也不慢,则很难调试和改进.
所以我的问题是,为什么差异?可能是SQL Mgmt Studio的锁定方式与控制台应用程序不同吗?
是否有可能让PHP应用程序认为服务器日期时间被大的可配置量(如6个月前或6个月后)所抵消?
背景:我们有一个处理体育赛事的网络应用程序,现在我们希望在我们的开发环境中运行它,使网站认为它是2009年秋季而不是2010年夏季.这是因为我们有很好的数据来自去年的秋季和今年的季节尚未开始,因此使用大量实际数据测试新功能将更容易,而不是编制2010年的新测试数据.
我们不想实际更改服务器的日期和时间.当前最佳选项似乎是将代码中的所有date()调用更改为my_date(),然后让my_date()将偏移量添加到实际系统日期.
看起来这个功能在其他人的类似情况下会很有用,所以我很好奇是否有更简单的方法通过一些配置参数全局完成而不修改代码.我做了RTM.
有没有人有一个脚本列出SQL Server数据库中所有现有索引的CREATE INDEX语句?
此线程SQL Server DB中所有索引和索引列的列表提供了有关如何查找它们的重要提示.但是生成CREATE INDEX语句的脚本会很棒.有时我们遇到没有足够数据的情况,或者在没有文档的情况下以特别方式添加索引,因此缺少create语句.就像我现在发现自己的情况一样.
谢谢.
我们有一个基于ASP.NET/MSSQL的Web应用程序,它可以生成带有连续订单号的订单.
当用户保存表单时,将按如下方式创建新订单:
如果我在单笔交易中附上上述3个步骤,如果两个客户同时保存新订单,是否会避免创建重复的订单号?(并且假设系统最终位于具有多个IIS服务器和一个MSSQL服务器的Web场中).
由于系统中某处的并发性,我想避免两个客户选择相同的MAX(order_number).
应该使用什么隔离级别?谢谢.