我刚刚设置了一个带有SQL Server 2008 Express实例的新Windows Server 2008计算机.SQL浏览器服务似乎无法正常工作.在Management Studio中,浏览服务器会显示新服务器的主机名,但不会显示实例名称.从列表中选择主机名时,它不会连接.但我可以通过键入hostname\instancename组合手动连接.
更新1:
更新2:
按照建议跟踪数据包,发现以下内容
考虑到这些结果,我想知道为什么主机名首先出现在客户端列表中.它根本不应该出现,对吧?
更新3:
在Microsoft支持的电话上花了一个半小时.我学到了一些东西,但问题还没有解决.有人建议我尝试在同一台机器上安装SQL Standard实例.我这样做了,新实例表现出了所有相同的症状.主机名仅在浏览列表中显示一次,而不是每个实例一次.
更新4:
由于赏金系统,Stackoverflow为我选择了一个答案,但这个问题没有得到解答.今天我尝试将整个VM移动到不同的主机服务器 - 一切都完全相同.主机名仍显示在浏览列表中,没有实例名称.
更新5:
确认在guest虚拟机(SQL)服务器上安装了Hyper-V Integration Services.
sql-server sql-server-2008-express sqlbrowser sql-server-2008
我的应用程序中有一个表单显示一些数据.当我第一次显示Form时,我将一些数据加载到DataTable中,然后将DataTable绑定到DataGridView.我还启动了一个执行一些较慢的数据库查询的异步方法.当这些慢速查询完成时,我需要更新DataTable中的几百行,填写从较慢查询返回的值,如下所示:
foreach (DataRow row in data.Rows)
{
SlowLoadingData slow_stuff = slow_query_results[(int)row["id"]];
row.BeginEdit();
row[column_one] = slow_stuff.One;
row[column_two] = slow_stuff.Two;
row[column_three] = slow_stuff.Three;
row.EndEdit();
}
Run Code Online (Sandbox Code Playgroud)
这非常慢,将UI线程挂起一分钟或更长时间,大概是因为每一行都在触发重绘.
经过一些研究,我发现了一种快速的方法.首先,将DataGridView绑定到绑定到DataTable的BindingSource,而不是直接绑定到DataTable.然后,在对DataTable进行更改时执行以下操作:
binding_source.SuspendBinding();
binding_source.RaiseListChangedEvents = false;
// foreach (DataRow in Data.Rows) ... code above
binding_source.RaiseListChangedEvents = true;
binding_source.ResumeBinding();
grid.Refresh();
Run Code Online (Sandbox Code Playgroud)
但是有一个问题,这是一个很麻烦的事情:上面的代码阻止DataGridView检测添加到DataTable的新行.添加到表中的任何新行都不会出现在网格中.如果使用箭头键将当前单元格选择移出网格的底端,网格也可能抛出异常,因为底层数据源有更多行,但网格没有创建网格行来显示它们.
那么,我可以看到两种可能的解决方案:
在更改底层DataTable时是否有更好的方法来抑制绑定更新?
是否有一种简单的方法可以告诉DataGridView正常刷新其网格行集合以匹配基础DataTable行的数量?(注意:我尝试过调用BindingSource.ResetBindings,但是如果从DataTable中删除了行,它似乎会触发更多异常!)
我正在尝试制作一个定期记录大量内容的程序.具体原因是,如果它是蓝屏,开发人员可以回去检查很多环境,看看那个时候发生了什么.
我的问题是,他们是一种导致蓝屏的方法吗?也许有一个windowsAPI调用(ZeroMemory可能?).
Anywhoo,如果你能想到一种在电话中引起蓝屏的方法,我会很感激.
我正在测试它的计算机是为了拍摄这样的东西哈哈.
顺便说一句,我使用的语言是C\C++.谢谢
我有一个用Delphi编写的Windows服务.它偶尔使用的第三方资源之一会被破坏,我发现修复这种情况的唯一方法就是退出并重新启动程序.我可以检测到程序中资源何时被破坏,我可以告诉Windows在服务停止后重新启动服务,但我无法弄清楚如何让服务告诉自己停止服务.
该计划非常简单.我用似乎正常的方式创建了一个服务应用程序.我有一个TService的子类来管理服务,而所有的功能都发生在一个单独的线程中.TService子类几乎只管理子线程的执行,并且在子线程中我会检测到损坏.
作为参考,这是服务和子线程的头信息.
type
TScannerThread = class(TThread)
private
Scanner : TScanner;
DefaultDir : String;
ImageDir : String;
procedure CheckScanner;
public
Parent : TComponent;
procedure Execute; override;
end;
TCardScanSvc = class(TService)
procedure ServiceCreate(Sender: TObject);
procedure ServiceExecute(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
private
ScannerThread : TScannerThread;
public
function GetServiceController: TServiceController; override;
end;
var
CardScanSvc : TCardScanSvc;
Run Code Online (Sandbox Code Playgroud)
在GUI应用程序中,我调用Application.Terminate,但TServiceApplication似乎没有该方法.我可以终止子线程,但主线程从未注意到,Windows认为该服务仍在运行.我真的想不起其他许多尝试.
该程序最初是在Delphi 5中创建的,我目前正在使用Delphi 2007,以防万一.
使用mghie的代码,我可以停止服务,但Windows只会在意外失败时重启服务,而不是正常停止服务.我要做的是创建一个单独的服务应用程序,如果有问题则将第一个信号作为第二个信号,然后让第二个信号重新启动第一个.
在我的代码中,jsc.tools是一个包含对象的对象.每个子对象都包含一个init()和run()方法.
我在启动时运行以下代码:
for(tool in jsc.tools) {
tool.init();
}
Run Code Online (Sandbox Code Playgroud)
这给了我错误"tool.init不是一个函数".
工具声明的示例是:
jsc.tools.sometool = {};
jsc.tools.sometool.run = function() {
// Apply tool
}
jsc.tools.sometool.init = function() {
// Set bits of data needed for the tool to run
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个(非常)简单的Win32 GUI程序,但由于某种原因,编译器(我使用的是VC++ 2008 Express)希望我手动将每个字符串或char*强制转换为LPCWSTR:
我每次执行此操作时都会收到此编译器错误,例如,我为"Hello"和"Note"收到此错误:
错误C2664:'MessageBoxW':无法将参数2从'const char [22]'转换为'LPCWSTR'
请告诉我,每次我这样做都不需要施展......
这是代码:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, "Hello", "Note", MB_OK);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 在C++类(或其任何父类)中至少有一个虚方法意味着该类将具有虚拟表,并且每个实例都将具有虚拟指针.
所以内存成本非常清晰.最重要的是实例上的内存开销(特别是如果实例很小,例如,如果它们只是包含一个整数:在这种情况下,在每个实例中都有一个虚拟指针可能会使实例的大小加倍.至于虚拟表占用的内存空间,我猜它与实际方法代码占用的空间相比通常可以忽略不计.
这让我想到了一个问题:是否有一个可衡量的性能成本(即速度影响)使方法虚拟化?在每次方法调用时,运行时都会在虚拟表中进行查找,因此如果对此方法进行非常频繁的调用,并且此方法非常短,那么可能会出现可测量的性能损失?我想这取决于平台,但有没有人运行一些基准测试?
我问的原因是我遇到了一个错误,这个错误恰好是由于程序员忘记定义一个虚拟方法.这不是我第一次看到这种错误.我想:我们为什么要添加虚拟关键字,而不是需要时取出时,我们绝对相信这是它的虚拟关键字没有必要?如果性能成本很低,我想我会在我的团队中推荐以下内容:只需在默认情况下将每个方法设置为虚拟,包括每个类中的析构函数,并且只在需要时将其删除.这对你来说听起来很疯狂吗?
MySQL的C API是否支持批量更新?我正在编写一个应用程序,其中大批量处理某些事务.如果在记录过程中我最终为每个插入执行单个调用DB,那将是非常低效的.
C与批处理SQL更新的Java API有什么相似之处吗?
谢谢,
N.
在ASP.NET 1.1的编译标记中添加batch ="false"的目的是什么?
c ×2
c# ×2
c++ ×2
winapi ×2
windows ×2
.net ×1
.net-1.1 ×1
asp.net ×1
bsod ×1
crash ×1
datagridview ×1
datatable ×1
delphi ×1
javascript ×1
loops ×1
mysql ×1
object ×1
performance ×1
python ×1
sockets ×1
sql-server ×1
sqlbrowser ×1
unicode ×1
vb.net ×1
web-config ×1