我有一个使用多个连接的视图的 SQL 查询,该查询偶尔运行非常慢 - 比正常情况慢很多,使查询几乎无法使用。
我从视图中复制了查询并进行了试验并在https://dba.stackexchange.com/a/60180/52607找到了解决方案- 如果我添加
OPTION (MERGE JOIN, HASH JOIN)
Run Code Online (Sandbox Code Playgroud)
到查询结束时,它的运行速度提高了约 6 倍。
我现在尝试将 OPTION 调整为原始视图,但 SQL Server/SSMS 告诉我
Incorrect syntax near the keyword 'OPTION'.
Run Code Online (Sandbox Code Playgroud)
如何将此选项添加到视图中,以便视图的结果查询同样快?
(将选项添加到视图上的查询并没有导致任何加速。这看起来像这样:
select * from vMyView
where SomeDate >= CONVERT(Datetime, '2017.09.20')
OPTION (MERGE JOIN, HASH JOIN)
Run Code Online (Sandbox Code Playgroud)
我想我必须直接将此选项用于 vMyView - 如果可能的话。)
我最近安装了Visual Studio 2008 TS(eval),以便能够对应用程序进行一些分析.现在我只知道当应用程序比"Hello World"更复杂时我对(真实世界)分析知之甚少.
我的主要问题是集成调试器似乎增加了所有线程所花费的时间,所以我得到总运行时间的几倍,某些函数(如sleep)会出现几次,我假设它们被多个线程调用.
现在我的问题是:我怎样才能让这个更容易检查?我只感兴趣的一个主题(主要是完成所有工作),其他人只是在等待某些东西,完全受到主线程运行时间的限制.(它们在相同的模块中,有时也称为相同的功能.)
有没有办法设置分析?有什么方法可以处理结果,以使它们对我的场景更有意义吗?除VS 2008之外的任何其他解决方案(如2010或外部探查器)?
我现在正在使用仪器(在我的视图中给出了比在我的视图中采样更好的结果)和.net 3.5下的C#.
在VS2008中创建Post-Build事件时,我想检查xcopy操作的目标是否不是只读的.我找到了一些代码(http://forums.techguy.org/dos-other/842311-solved-checking-if-file-folder.html),它使用了一个临时变量,后来检查了某些属性.这是行不通的.当我手动打印变量时,它似乎是空的.
if $(PlatformName)==x86 (
echo x86
For /F "Delims=" %%I In ('Attrib $(ProjectDir)..\..\somedir\$(ConfigurationName) \somemoredir\$(TargetName).dll') Do Set _Attribs=%%I
If NOT "%_Attribs:~5,1%"=="R" (
set test="monkey"
echo %test%
echo $(test)
echo nono
echo %_Attribs%
echo $(ProjectDir)..\..\somedir\$(ConfigurationName)\somemoredir\$(TargetName).dll
attrib $(ProjectDir)..\..\somedir\$(ConfigurationName)\somemoredir\$(TargetName).dll
xcopy /Y $(ProjectDir)..\..\..\Runtime\bin\$(TargetName).* $(ProjectDir)..\..\somedir\$(ConfigurationName)\somemoredir\
)
Run Code Online (Sandbox Code Playgroud)
)
输出是:
x86 ECHO已开启.ECHO正在开启.nono ECHO开启了.
然后是attrib消息等等.
echo%test%,echo $(test)等似乎表明测试变量不包含任何内容.
我如何使用环境变量?
(BTW,_Attribs,我真的很感兴趣,也没有任何东西.)
batch-file set environment-variables post-build-event visual-studio-2008
我想使用using语句,但如果它应该指向的对象不存在,则可能需要更改我“使用”的变量的值。
我想到了这样的事情(用于注册表访问和 32/64 窗口 - 尽管这是我当前的用例,但这是一个普遍问题):
using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MS\Platform"))
{
if (key == null)
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\MS\Platform");
// use key
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不能编译:
error CS1656: Cannot assign to 'key' because it is a 'using variable'
Run Code Online (Sandbox Code Playgroud)
我可以通过不使用using而是 try/catch/finally 和/或在使用之前测试注册表项是否存在来解决此问题。
有没有办法继续使用using,然后处理正确的对象?
我们想从 VS 2017 迁移到 VS 2019。我们仍然在 TFS 2017 上,现在想留在那里。
我很久以前就设置了构建基础设施,所以我不再确定 VS 在构建代理上的作用是什么..我当然有时会使用它来手动打开一个由于不清楚的原因无法编译的解决方案,我认为一些图书馆也需要它。
我希望自动构建过程使用与开发人员机器上相同的 VS,以保持一致性。
我可以卸载 VS 2017 并在构建机器上安装 VS 2019 并且构建将使用 VS 2019 工作吗?或者更一般地说:我可以在 TFS 2017 构建代理上使用 VS 2019 构建基础架构进行构建吗?
谢谢!
我有一个本地GIT回购提交,但到目前为止还没有.我根据/sf/answers/1400286471/创建了它,它基本上导致repo的本地部分没有远程/来源.
我没有(公司)GIT服务器,但是Onedrive for Business帐户似乎非常适合在狗吃机器时至少备份仓库.(一旦事情稳定下来,计划稍后迁移到SVN的公司VCS.)
我知道GIT可以同步到文件系统,但是..怎么做?
由于我已经在Visual Studio中输入了一些错误的数据作为远程仓库(它询问我何时选择"同步"选项,抱怨,现在所有选项都在"同步"下显示为灰色),我该如何更改?只能通过命令行之类的
git remote set-url origin "C:\Users\Test\OneDrive for Business\Andreas\code\project1"
Run Code Online (Sandbox Code Playgroud)网络共享和本地共享的正确GIT URL是什么?(就我而言,我最感兴趣的是本地Windows共享,因为我希望Onedrive负责备份.)
我现在有一个空文件夹作为远程(我创建了包含"project1"的完整路径)并且还通过命令行获取错误:
git push --set-upstream origin master
fatal: 'C:\Users\Test\OneDrive for Business\Andreas\code\project1' does not appear to be a git repository
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)
初始推送还需要其他什么吗?到目前为止,我只使用了bitbucket/github,我通过web界面事先明确地创建了一个repo.
我想将foreach循环转换为linq语句.
我有以下统一类(来自元数据,删除了大部分功能)
public class Transform : Component, IEnumerable
{
public IEnumerator GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
我在我自己的类中有一个这个类的局部变量(继承),这是
Transform transform;
Run Code Online (Sandbox Code Playgroud)
我可以做到这一点
List<Transform> children = new List<Transform>();
foreach (Transform t in transform)
children.Add(t);
Run Code Online (Sandbox Code Playgroud)
如何在Linq表达式中执行相同的操作?
我想得到一些控件的窗口句柄来做一些东西(需要一个句柄).控件在不同的应用程序中.
很奇怪的是; 我发现许多控件没有窗口句柄,比如Windows资源管理器中工具栏(?)中的按钮.只是尝试获取文件夹/搜索/(等)按钮的句柄.它只给了我0.
所以..第一个问题:为什么有些控件没有窗口处理?他们心中不是所有的控制窗户吗?(只是谈论标准控件,就像我期望它们在Windows资源管理器中一样,在窗格上没有任何自定义控件等.)
这让我想到了第二个问题:如果无法掌握它们,如何使用它们(比如使用EnableWindow)?
非常感谢任何投入!
编辑(附加信息):
Windows资源管理器就是一个例子.我经常遇到这个问题 - 在另一个应用程序中(我真正感兴趣的是一个专有的应用程序).我有"物理"控件(因为我可以获得这些控件的AutomationElement),但它们没有窗口句柄.此外,我试图发送一个消息(SendMessage)来获取按钮状态,试图找出它是否被推(它是一个标准按钮,似乎只通过该消息表现出这种行为 - 至少就此而言我已经看到了.此外,推送状态在该按钮上的持续时间可能比标准按钮上的要长很多,尽管Windows资源管理器按钮显示类似的行为,就像按钮式复选框一样,尽管它们是(推)按钮).SendMessage需要一个窗口句柄.
ToolBar是否以某种方式改变其子元素的行为?拿走他们的窗把手或类似的东西?(使用父句柄/控件ID进行标识??)但是那么如何在那些需要窗口句柄的控件上使用函数呢?
我有一个日期时间字符串.
string strDate = "20140424_18255375";
Run Code Online (Sandbox Code Playgroud)
如何验证日期时间是否采用此格式 YYYYMMDD_HHmmssff
我试过了:
bool isTrue = DateTime.TryParseExact(strDate, "YYYYMMDD_HHmmssff", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法可以使用RegEx或任何正常方式验证日期时间,请提供帮助.
c# ×4
.net ×1
batch-file ×1
build-agent ×1
button ×1
controls ×1
filesystems ×1
foreach ×1
git ×1
handle ×1
linq ×1
performance ×1
profiler ×1
profiling ×1
query-hints ×1
regex ×1
set ×1
sql-server ×1
sql-view ×1
tfs ×1
using ×1
winapi ×1
windows ×1