小编Uns*_*ced的帖子

SQL Server中的参数嗅探(或欺骗)

不久之前,我有一个查询,我为我的一个用户运行了很多.它仍然在进化和调整,但最终它稳定并且运行得非常快,所以我们从中创建了一个存储过程.

到目前为止,这是正常的.

但是,存储过程很慢.查询和proc之间没有实质性差异,但速度变化很大.

[后台,我们正在运行SQL Server 2005.]

友好的本地DBA(不再在这里工作)看了一下存储过程并说"参数欺骗!" (编辑:虽然它似乎也可能被称为'参数嗅探',这可能解释了当我试图搜索它时谷歌的点击率很低.)

我们将一些存储过程抽象到第二个存储过程,将对这个新内部过程的调用包装到预先存在的外部过程中,称为外层过程,嘿,它与原始查询一样快.

那么,是什么给出的?有人可以解释参数欺骗吗?

奖金积分

  • 强调如何避免它
  • 建议如何识别可能的原因
  • 讨论替代策略,例如统计数据,指数,关键,以减轻这种情况

t-sql sql-server sql-server-2005 parameter-spoofing

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

计算SQL Server存储过程中已删除行的数量

在SQL Server 2005中,是否有一种删除行并被告知实际删除了多少行的方法?

我可以select count(*)用相同的条件做一件事,但我需要这完全值得信赖.

我的第一个猜测是使用@@ROWCOUNT变量 - 但是没有设置,例如

delete 
from mytable 
where datefield = '5-Oct-2008' 

select @@ROWCOUNT 
Run Code Online (Sandbox Code Playgroud)

总是返回0.

MSDN建议OUTPUT构建,例如

delete from mytable 
where datefield = '5-Oct-2008' 
output datefield into #doomed

select count(*) 
from #doomed
Run Code Online (Sandbox Code Playgroud)

这实际上失败了,语法错误.

有任何想法吗?

t-sql sql-server audit sql-delete

46
推荐指数
4
解决办法
6万
查看次数

您选择的报告工具是什么?

每个项目都需要某种类型的报告功能.从您选择的语言的foreach循环到完整的BI平台.

为了完成工作,工具,小部件,平台使用了哪些工具,成功,失败和失败?

sql reporting business-intelligence

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

显示NuGet包的依赖项

当您显示"管理NuGet包"对话框时,它将显示可用的包,其中包含的信息比来自powershell的信息要多得多.

特别是,有一种方法可以从powershell中列出可用的包 - 或者只是一个特定的包 - 与它们所依赖的包,最好是它们的目标版本(范围)?

powershell nuget

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

在Windows窗体应用程序窗体中嵌入文件资源管理器实例

我的(C#,. NET 3.5)应用程序生成文件,除了引发可以捕获和响应的事件之外,我还想在表单中向用户显示目标文件夹.文件列表以与其他信息相同的形式显示.

我正在使用WebBrowsercontrol(System.Windows.Forms.WebBrowser)的实例,然后导航到该文件夹​​.这将显示资源管理器窗口的一些默认视图,左侧是文件摘要面板,"Tiles"(大图标和文本)视图中的文件.

例如,

wb.Navigate(@"c:\path\to\folder\");
Run Code Online (Sandbox Code Playgroud)

我想压缩面板并在详细信息视图中查看文件列表.用户可以通过右键单击上下文菜单来实现此目的,但我希望它能自动生成.

我宁愿不必构建自己的TreeView,DataGridView或其他任何东西; WebBrowser控件执行所有更新和重新排序,以及"免费".

有没有更好的办法?使用不同的控件或传递给控件的其他参数?

如果我可以捕获事件(例如,文件被选中/重命名/双击等),那就更好了!

c# explorer winforms

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

将监视的Visual Studio变量输出到文件

有没有一种方法在Visual Studio(2008,如果重要),我可以在调试/中断模式下,将变量的内容写入文本/ XML文件?

方案是我在调试中运行了一个很长的进程,我已经意识到我没有记录关于进程一直在监视的事件的足够详细信息,但幸运的是,代码中的变量中仍然存在历史记录.

我可以浏览这个列表中的数万个项目,但是一旦我在应用程序上停止了它就不会持久...这没有明显的上下文选项,但是有什么方法,比手动更好的方法?或者没有希望,我只需要点击停止,重新设置日志记录功能并再次运行它?

除了试图打破断点,修改代码并重新编写以创建更好的记录器,有没有办法不丢失内存中的数据?

debugging visual-studio

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

测试NuGet包

我们是NuGet的大用户,我们有25-30个包,我们在网络共享上提供.

我们希望能够在消费应用程序中构建和发布新软件包之前对其进行测试.理想情况下,这可以使用类似于Maven的快照并具有特定开发包(例如快照功能)来完成.

有没有其他人想出一个理想的非合法的方式呢?

我们偏爱的方法是生成包装配件,然后手动覆盖packages /目录中的装配,即替换实际的项目引用,但这似乎并不特别干净.

更新:

我们使用CI构建服务器,它在每次提交时都会创建构建,并且具有特定的手动触发的NuGet构建,该构建可以使用特定标记的代码库版本.我们不希望在每次提交时都创建一个NuGet构建,但是我们希望能够在触发手动NuGet包构建之前在野外测试可能的候选者.

testing nuget

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

关于C#和VB.net相似/差异的访谈问题

我几年来一直是VB.net开发人员,但我目前正在申请一些使用C#的公司.我甚至被告知至少有一家公司不想要VB.net开发人员.

我一直在网上试图找到两者之间的真正差异,并询问了crackoverflow.唯一的主要区别是一些语法差异对我来说是微不足道的,因为我也是一个Java开发人员.

当面试官告诉我他们正在寻找C#开发人员或类似的问题时,他们会有什么好的回应?

c# vb.net

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

奇怪的跨线程UI错误

我正在编写一个WinForms应用程序,它有两种模式:控制台或GUI.同一解决方案中的三个项目,一个用于控制台应用程序,一个用于UI表单,第三个用于保存两个接口都将连接的逻辑.控制台应用程序运行绝对顺利.

一个包含用户选择的模型,它有一个IList<T>T是一个本地对象Step,它实现了INotifyPropertyChanged,因此在UI中它被安装到DataGridView上.一切都在运行时很好,对象的初始状态反映在屏幕上.

每个Step对象是依次执行的任务; 一些属性将改变,反映回IList并传递给DataGridView.

UI版本中的此操作是通过创建BackgroundWorker将事件提升回UI来完成的.这样Step做并生成一个StepResult对象,它是一个表示结果的枚举类型(例如Running,NotRun,OK,NotOK,Caveat)和一个表示消息的字符串(因为步骤已经运行但不完全符合预期,即有一个警告).通常,操作将涉及数据库交互,但在调试模式下,我随机生成结果.

如果消息为null,则永远不会有问题,但是如果我生成这样的响应:

StepResult returnvalue = new StepResult(stat, "completed with caveat")
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,说明正在从创建它的线程以外的线程访问DataGridView.(我通过一个自定义处理程序传递它,它应该在需要时处理调用 - 也许它不会?)

然后,如果我生成一个唯一的响应,例如使用随机数r:

StepResult returnvalue = new StepResult(stat, r.ToString());
Run Code Online (Sandbox Code Playgroud)

操作成功没有问题,数字写得干净利落地写入DataGridView.

我很困惑.我假设它在某种程度上是一个字符串文字问题,但任何人都可以提出更明确的解释吗?

c# string multithreading literals

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

生成唯一的参考编号策略

嗯......这是我的CS知识让我失望的地方.我想写一个算法,生成一个唯一的参考号.

我不想使用序列号,因为它们会带来安全风险,我想使用字母数字.裁判也会有最小和最大长度.(我不能使用GUID太长)

理想情况下,我不想查询我的持久层,看看之前是否使用过ref.

我可以采用什么策略?

language-agnostic uniqueidentifier

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