小编Sql*_*yan的帖子

在Visual Studio解决方案中启用和禁用某些项目的"步入"调试

我有一个Visual Studio解决方案,里面有四个C#项目.我想从我的主项目中进入解决方案中的支持项目的代码,但是当我使用"Step into"键时,它只是跳过对其他项目的调用.我在支持项目中设置了断点,它们被忽略了,我不能为我的生活让它进入任何对该项目的引用.

一切都设置为编译为"调试",我已经看到Visual Studio警告我,我的断点将不会被击中 - 在这种情况下它不会这样做.就好像我的代码会调试一样,但是在运行时,有一个设置,告诉Visual Studio不要单步执行该项目中的代码.我的解决方案中的所有其他项目都可以正常调试.

我检查了什么盒子导致这种行为?

更新CLARITY:"Just my code"选项目前已禁用.此外,由于代码属于同一解决方案中的项目,我不认为"仅我的代码"选项适用于此处.我认为它只适用于我没有源代码的预编译代码,但由于我的项目中有源代码,我不认为这个选项有任何影响.

c# debugging step-into visual-studio

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

将字符串转换为Double - VB

在VB中是否有一种有效的方法来检查字符串是否可以转换为double?

我目前正在尝试将字符串转换为double,然后查看是否抛出异常.但这似乎减慢了我的申请速度.

Try
    ' if number then format it.
    current = CDbl(x)
    current = Math.Round(current, d)
    Return current
Catch ex As System.InvalidCastException
    ' item is not a number, do not format... leave as a string
    Return x
End Try
Run Code Online (Sandbox Code Playgroud)

vb.net string double try-catch

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

找出一组中的数字组合加起来给定的总数

我的任务是帮助一些会计师解决他们遇到的常见问题 - 给出交易清单和总存款,哪些交易是存款的一部分?例如,假设我有这个数字列表:

1.00
2.50
3.75
8.00
Run Code Online (Sandbox Code Playgroud)

我知道,我的存款总额是10.50,我可以很容易地看到它弥补了中8.002.50交易.然而,鉴于一百笔交易和数百万美元的存款,它很快变得更加困难.

在测试蛮力解决方案(花费太长时间以实现)时,我有两个问题:

  1. 有了大约60个数字的列表,它似乎找到了十几个或更多的组合,任何合理的总数.我期待一个单一的组合来满足我的总数,或者可能是一些可能性,但似乎总是有很多组合.是否有一个数学原理描述了为什么会这样?看来,即使是中等大小的随机数集合,您也可以找到多个组合,几乎可以达到您想要的总数.

  2. 我为这个问题建立了一个强力解决方案,但它显然是O(n!),并且很快失控.除了明显的快捷方式(排除大于总数的快捷方式),有没有办法缩短计算时间?

我当前(超慢)解决方案的详细信息:

详细信息量列表从最大到最小排序,然后以下过程以递归方式运行:

  • 获取列表中的下一个项目,看看是否将其添加到运行总计中使您的总匹配成为目标.如果是,请将当前链作为匹配项.如果未达到目标,请将其添加到运行总计中,将其从详细信息量列表中删除,然后再次调用此过程

通过这种方式,它可以快速排除较大的数字,将列表缩小到只需要考虑的数字.但是,它仍然是n!似乎永远不会完成更大的列表,所以我对我可以采取的任何快捷方式感兴趣 - 我怀疑即使从列表中删除1个数字也会将计算时间缩短一半.

谢谢你的帮助!

algorithm math accounting nested-loops

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

SQL Server - 计算列的索引?

我加入一个表几十个不同的时间,每次,我根据其中一列的SUBSTRING结果加入(或过滤)(它是一个字符串,但左边用零填充,我不是'关心最后四位数).因此,即使此列已编制索引并且我的查询将使用索引,它也会进行表扫描,因为SUBSTRING本身未编入索引,因此SQL Server必须在加入之前为每一行计算它.

我正在寻找有关如何加快这一过程的任何想法.目前,在表上有一个视图(它是一个"SELECT*FROM",只是为了给表一个友好的名称),我正在考虑在计算的视图中添加一列,然后对其进行索引.不过,我对其他建议持开放态度 - 任何想法?

更多细节: 我应该首先分享这个.该表从我们的计费系统接收复制,因此编辑基础表以添加计算列不是一种选择.必须将任何计算列添加到表上的视图中.此外,前导零并不总是前导零 - 它们有时是我不感兴趣的其他数据.我认为真正的问题是" 如何在VARCHAR列的中间加入数据同时还可以使用一个索引?全文搜索? "

澄清我的例子 我正在简化,但实际上,假设我正在尝试使用以下值在列中查找值:

00000012345MoreStuff
00000012345Whatever
19834212345
Houses12345837443GGD
00000023456MoreStuff
Run Code Online (Sandbox Code Playgroud)

我对SUBSTRING(7,5)="12345"的行感兴趣,所以我想要1-4行,但不是第5行.我建议的是在我的"SELECT*"视图中添加一列在其中包含此子字符串,然后根据该索引进行索引.那更有意义吗?

sql-server indexing calculated-columns sql-server-2008

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

TFS为项目注释/责备摘要报告

在Team Foundation Server中,我知道您可以使用Annotate功能查看最后编辑特定文件中每一行的人(相当于CVS中的"Blame").我想做的是类似于在项目中的每个文件上运行Annotate,并获得在项目中编辑文件的所有开发人员的摘要报告,以及他们当前"拥有"的代码行数项目.

除了系统地运行每个文件的Annotate之外,我看不到这样做的方法.任何可以使这个过程更快的想法?

PS - 我正在做这件事,看看顾问的代码中有多少仍然存在于一个特定的(相当大的)项目中,而不是密切关注我的开发人员,以防你担心我的动机:)

tfs visual-studio tfs-code-review

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

以有限(1000行)块的形式移动SQL Server数据

我正在编写一个进程,根据日期时间列归档SQL Server表中的行.我想在X之前移动所有具有日期的行,但问题是每个日期有数百万行,因此对每个日期执行BEGIN TRANSACTION ... INSERT ... DELETE ... COMMIT需要太长时间,并为其他用户锁定数据库.

有没有办法可以用更小的块来做到这一点?也许使用ROWCOUNT或类似的东西?

我原本考虑过这样的事情:

SET ROWCOUNT 1000

DECLARE @RowsLeft DATETIME
DECLARE @ArchiveDate DATETIME

SET @ROWSLEFT = (SELECT TOP 1 dtcol FROM Events WHERE dtcol <= @ArchiveDate)

WHILE @ROWSLEFT IS NOT NULL
BEGIN

    INSERT INTO EventsBackups
    SELECT top 1000 * FROM Events

    DELETE Events

    SET @ROWSLEFT = (SELECT TOP 1 dtcol FROM Events WHERE dtcol <= @ArchiveDate)

END
Run Code Online (Sandbox Code Playgroud)

但后来我意识到我无法保证我删除的行是我刚刚备份的行.或者我可以......?

更新: 我考虑的另一个选择是添加一个步骤:

  1. 将符合我的日期条件的TOP 1000行选入临时表
  2. 开始交易
  3. 从临时表插入存档表
  4. 从源表中删除,连接到每列的临时表
  5. 提交交易
  6. 重复1-5,直到没有符合日期条件的行

有没有人知道这个系列的费用如何与下面讨论的其他一些选项相比较?

详细信息:我正在使用SQL 2005,因为有人问.

sql-server insert rowcount

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

SQL Server Profiler - 监视对象的权限被拒绝?

我正在使用SQL事件探查器来观察一些数据库活动,我有兴趣观察数据库中各种对象的"权限被拒绝"."安全审计"类别中有大约50个不同的项目,但似乎没有任何项目显示对象的"权限被拒绝".我可以看到登录失败,以及其他一些失败,但对象级别没有任何内容.

示例:用户具有数据库权限,但不具有特定表的权限.当他们尝试从该表中进行选择时,他们会收到错误 - 我可以让Profiler监视这些错误吗?

sql-server permissions sql-server-profiler

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

为什么我需要在SQL"GROUP BY"子句中显式指定所有列 - 为什么不"GROUP BY*"?

这一直困扰着我 - 为什么SQL语句中的GROUP BY子句要求我包含所有非聚合列?默认情况下应该包含这些列 - 一种"GROUP BY*" - 因为我甚至无法运行查询,除非它们全部包含在内.每列必须是聚合或在"GROUP BY"中指定,但似乎任何未聚合的列都应自动分组.

也许它是ANSI-SQL标准的一部分,但即便如此,我也不明白为什么.有人可以帮我理解这个约定的必要性吗?

sql group-by aggregate ansi-sql sql-standards

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

在不添加/删除聚簇索引的情况下减少SQL Server表碎片?

我有一个大型数据库(90GB数据,70GB索引)在过去一年中一直在缓慢增长,并且增长/变化不仅引起了索引的大量内部碎片,而且导致了表本身的大量内部碎片.

很容易解决(大量)非常分散的索引 - REORGANIZE或REBUILD将根据它们的碎片程度来处理它 - 但我在清理实际表碎片时可以找到的唯一建议是添加聚簇索引到桌子.之后我会立即删除它,因为我不希望桌面上有聚簇索引,但是有没有另一种方法可以在没有聚簇索引的情况下执行此操作?一个"DBCC"命令会这样做吗?

谢谢你的帮助.

sql-server sql-server-2005 fragmentation dbcc database-fragmentation

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

我可以欺骗HttpRequest.Current.Request.IsLocal吗?

我正在运行一个Web应用程序,它显示一些调试行为,如果它在本地运行 - 引用资源字符串等 - 我想在我的笔记本电脑上演示应用程序,我将无法访问互联网,所以它必须是本地的.

该应用程序使用HttpContext.Current.Request.IsLocal来确定它是否在本地运行 - 有什么方法可以欺骗它吗?即使我确实在本地运行,我还是想把它变成"假".

我确实可以访问源代码(并且意识到我可以演示一个"IsLocal"检查被注释掉的构建),但是不想为这个演示做一个特殊的构建.如果需要,我会这样做,但我宁愿使用现有的代码库.

asp.net httpcontext

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