问题列表 - 第4225页

存储过程仅在从应用程序运行时导致超时

我们遇到了sp的问题.

我们有一个非常简单的sp,它包含一个声明的表和几个外连接,最后返回20到100行.

因为查询这个sp一直给我们在生产和测试环境中表现不佳,所以我们最近重新编写了它以提高效率,并且在我们的测试环境中进行了彻底的测试.

我们将它发布到生产中只是为了发现它仍然很慢并导致我们的.NET 2.0应用程序在调用时超时.

我们什么都不懂,在生产数据库上进入Management Studio并在那里运行sp,它在1秒内执行.

也就是说,当从我们的应用程序运行时,它极其缓慢并导致超时,当从Management Studio运行时它非常快并且从不需要超过一秒钟.

任何对SQL Server 2005有深入了解的人都能给我们一个暗示吗?

.net sql-server performance stored-procedures .net-2.0

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

如何解决违反德米特法的行为?

我和一位同事为我们的客户设计了一个系统,我们认为我们创造了一个漂亮干净的设计.但是我遇到了一些我们引入的耦合问题.我可以尝试创建一个包含与我们的设计相同的问题的示例设计,但如果您原谅我,我将创建一个设计摘录来支持这个问题.

我们正在开发一种为患者注册某些治疗方案的系统.为了避免链接到图像,我将概念性UML类图描述为ac#样式类定义.

class Discipline {}
class ProtocolKind 
{ 
   Discipline; 
}
class Protocol
{
   ProtocolKind;
   ProtocolMedication; //1..*
}
class ProtocolMedication
{
   Medicine;
}
class Medicine
{
   AdministrationRoute;
}
class AdministrationRoute {}
Run Code Online (Sandbox Code Playgroud)

我将尝试解释一下设计,协议是新治疗的模板.并且协议属于某种类型并且具有需要施用的药物.根据协议,对于相同的药物(以及其他事物),剂量可以不同,因此存储在ProtocolMedication类中.AdministrationRoute是药物的管理方式,与协议管理分开创建/更新.

我发现以下地方违反了得墨忒耳法则:

违反了得墨忒耳法

在BLL里面

例如,在ProtocolMedication的业务逻辑中,存在依赖于药物的AdministrationRoute.Soluble属性的规则.代码将成为

if (!Medicine.AdministrationRoute.Soluble)
{
   //validate constrains on fields
}
Run Code Online (Sandbox Code Playgroud)

在存储库内

列出某个学科中所有协议的方法将写成:

public IQueryable<Protocol> ListQueryable(Discipline discipline)
{
    return ListQueryable().Where(p => (p.Kind.Discipline.Id == discipline.Id)); // Entity Frameworks needs you to compare the Id...
}
Run Code Online (Sandbox Code Playgroud)

在用户界面内

我们使用ASP.NET(没有MVC)作为我们系统的接口,在我看来这个层目前有最严重的违规行为.gridview的数据绑定(必须显示协议的Discipline的列必须绑定到Kind.Discipline.Name),这是字符串,因此没有编译时错误.

<asp:TemplateField HeaderText="Discipline" SortExpression="Kind.Discipline.Name">
   <ItemTemplate>
      <%# Eval("Kind.Discipline.Name")%>
   </ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

所以我认为实际的问题可能是,什么时候可以将其视为Demeter的建议,以及可以采取哪些措施来解决违反Demeter法的问题?

我对自己有一些想法,但我会将它们作为答案发布,以便他们可以单独评论和投票.(我不确定这是不是这样做的方法,如果没有,我会删除我的答案并将其添加到问题中).

language-agnostic design-patterns coupling law-of-demeter

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

如何从iPhone连接到MySQL数据库?

我正在尝试从iPhone连接到远程mysql数据库.我搜索了很多网站,但我没有找到任何帮助.如果有人使用过这个,请发送解决方案.

mysql sql iphone cocoa-touch

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

是否可以在PHP中创建静态类(如在C#中)?

我想在PHP中创建一个静态类,并使其行为与在C#中的行为相同,所以

  1. 第一次调用类时会自动调用构造函数
  2. 无需实例化

这种东西......

static class Hello {
    private static $greeting = 'Hello';

    private __construct() {
        $greeting .= ' There!';
    }

    public static greet(){
        echo $greeting;
    }
}

Hello::greet(); // Hello There!
Run Code Online (Sandbox Code Playgroud)

php oop static design-patterns

135
推荐指数
4
解决办法
11万
查看次数

使用RegEx的JavaScript小数位限制

我对文本框进行了一些客户端验证,它只允许最多两个小数位的数字而没有其他输入.

此脚本仅用于输入数值,但需要进行调整以使其可以采用小数点后跟最多两位小数.

我尝试过这样的事情/[^\d].\d{0,2},但是替换电话不起作用,我不知道怎么做.

<script type="text/JavaScript">
  function valid(f) {
    if (!/^\d*$/.test(f.value)) {
      f.value = f.value.replace(/[^\d]/g,"");
      alert("Invalid number");
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)

注意

我需要匹配一个空字符串.如果提供了空字符串并且提交了表单,则该值默认为零.

javascript regex

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

如何找到mysql中的列是否为auto_increment?

我正在尝试检查我的mysql数据库information_schema以找出列的属性.我无法找到哪些列是auto_increment的详细信息.有谁知道我在哪里可以在information_schema数据库中找到这个信息?

mysql database

7
推荐指数
2
解决办法
3326
查看次数

在WinMobile手机中访问GPS功能

假设您有一台也配有GPS接收器的Windows Mobile 6.0手机.WinMobile SDK是否支持访问GPS功能?

如果没有,使用GPS进行编程的选项(API)是什么,即编写将使用GPS功能的应用程序.我主要对Windows Mobile 6.x感兴趣,但也请包括通用回复.

我一定会投票给出最有帮助的答案.

提前致谢.

gps windows-mobile

4
推荐指数
2
解决办法
3892
查看次数

将Web服务结果与Flex中的请求进行匹配

在我得到问题之前,有点(!)的背景知识:

我有一个手风琴控件加载了一个网格数组,每个网格都是延迟加载的数组.我正在使用自动生成的Web服务代理来检索这些列表.我希望用户能够更改手风琴中选定的孩子而无需等待Web服务响应.我最初对所有请求使用相同的代理实例,并按照它们的顺序跟踪请求,但问题是较短的数组从服务器返回得更快,因此请求的顺序变得无关紧要.

在处理代理结果事件时,我找不到一种明确的方法来确定原始请求,所以我最终得到的是一个处理手风琴上的change事件的函数,实例化一个新的webservice代理,将其推送到哈希表中.所选子项的索引,然后添加一个闭包作为事件处理程序.即有点像这样的东西:

private proxyTable:Object = new Object();
private function PopulateThingGrid(index:Number):void
{
    var grid:ThingGrid = myAccordion.getChildAt(index) as ThingGrid;
    grid.things = ArrayCollection(proxyTable[index].getThings_lastResult);
}

private function SendThingRequest(index:int):void
{
    var grid:ThingGrid= myAccordion.getChildAt(index) as ThingGrid;
    if (grid.things.length == 0)
    {
        if (proxyTable[index] == null)
        {
            proxyTable[index] = new MyWebServiceProxy();
        }
        var proxy:MyWebServiceProxy= proxyTable[index];
        proxy.addgetThingsEventListener(function ():void { PopulateThingGrid(index); });

        var list:ThingList = thingLists.getItemAt(index) as ThingList;
        proxy.getThings("thinglist", list.ListID);
    }
}

private function myAccordion_Change(event:IndexChangedEvent):void
{
    SendThingRequest(event.newIndex);
}
Run Code Online (Sandbox Code Playgroud)

(我试图对此进行匿名处理,所以我可能错过了一些东西,但希望你能得到这个想法)

那么,对于问题:是否有更简单的方法将代理结果与我刚刚遗漏的原始请求相匹配?

如果没有,我做得合理吗?我有点担心代理实例的数量,我可以最终生成然后正确处理它们(当有必要时) - 是否有任何我可能不知道的陷阱?

更新: 我认为问题可能出现,因为生成的代理代码从flash.events.Event而不是mx.rpc.events.ResultEvent继承ResultEvents.我不完全确定它为什么这样做 - 访问AsyncToken的唯一方法是它最初由方法调用返回.

apache-flex actionscript asynchronous web-services

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

SQL Server - "sys.functions"在哪里?

SQL Server 2005在我经常使用的系统目录上有很棒的sys.XXX视图.

让我失望的是:为什么有一个"sys.procedures"视图来查看有关存储过程的信息,但是没有"sys.functions"视图来查看存储函数的相同信息?

没有人使用存储的功能吗?我发现它们对于例如计算列等非常方便!

是否有一个特定的原因缺少sys.functions,或者它只是被认为不足以放入sys目录视图的东西?它在SQL Server 2008中可用吗?

干杯,马克

sql sql-server sql-server-2005 stored-functions

101
推荐指数
4
解决办法
7万
查看次数

在生产框上部署Sql Server Reporting Services报告

如何在生产箱上部署Sql server报告?在本地它不是问题,我只是指定URL然后右键单击项目并说部署在我的本地服务器上.

但是生产服务器不会出现这种情况

sql sql-server sql-server-2005 reporting-services

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