问题列表 - 第6151页

SQL Server Browser仅显示主机名,而不显示实例名称

我刚刚设置了一个带有SQL Server 2008 Express实例的新Windows Server 2008计算机.SQL浏览器服务似乎无法正常工作.在Management Studio中,浏览服务器会显示新服务器的主机名,但不会显示实例名称.从列表中选择主机名时,它不会连接.但我可以通过键入hostname\instancename组合手动连接.

更新1:

  1. 浏览器服务正在运行,我已经尝试了几个不同的帐户,包括域管理员,这是一个不好的做法,但我还是尝试进行故障排除.
  2. 我试过在防火墙上打孔,并完全关闭防火墙.
  3. 它运行在Windows Server 2008 64位主机上的Hyper-V,Windows Server 2008 32位guest虚拟机上.我之前(没有问题)在同一台主机上完成了这项工作,但使用的是SQL 2008 Standard而不是Express.
  4. 当我在SQL Server计算机上的SSMS(Express)中浏览服务器时,它工作正常并显示整个实例名称.当我使用SSMS(标准)在远程计算机(在同一个Intranet上)上浏览它时,它只显示主机名.

更新2:

按照建议跟踪数据包,发现以下内容

  1. 客户端按预期发送广播,并从同一网络上的其他SQL Server收到正确的响应.
  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

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

优化绑定到DataGridView的DataTable的更新

我的应用程序中有一个表单显示一些数据.当我第一次显示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的新行.添加到表中的任何新行都不会出现在网格中.如果使用箭头键将当前单元格选择移出网格的底端,网格也可能抛出异常,因为底层数据源有更多行,但网格没有创建网格行来显示它们.

那么,我可以看到两种可能的解决方案:

  1. 在更改底层DataTable时是否有更好的方法来抑制绑定更新?

  2. 是否有一种简单的方法可以告诉DataGridView正常刷新其网格行集合以匹配基础DataTable行的数量?(注意:我尝试过调用BindingSource.ResetBindings,但是如果从DataTable中删除了行,它似乎会触发更多异常!)

.net c# datatable datagridview

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

模拟BlueScreen

我正在尝试制作一个定期记录大量内容的程序.具体原因是,如果它是蓝屏,开发人员可以回去检查很多环境,看看那个时候发生了什么.

我的问题是,他们是一种导致蓝屏的方法吗?也许有一个windowsAPI调用(ZeroMemory可能?).

Anywhoo,如果你能想到一种在电话中引起蓝屏的方法,我会很感激.

我正在测试它的计算机是为了拍摄这样的东西哈哈.

顺便说一句,我使用的语言是C\C++.谢谢

c++ windows crash bsod

9
推荐指数
3
解决办法
6343
查看次数

如何重新启动用Delphi编写的Windows服务应用程序?

我有一个用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只会在意外失败时重启服务,而不是正常停止服务.我要做的是创建一个单独的服务应用程序,如果有问题则将第一个信号作为第二个信号,然后让第二个信号重新启动第一个.

delphi winapi windows-services

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

为什么这不起作用?在循环中调用属于对象的函数

在我的代码中,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)

javascript loops object

0
推荐指数
1
解决办法
82
查看次数

投射到LPCWSTR?

我正在尝试创建一个(非常)简单的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 windows unicode winapi

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

在C++类中使用虚方法的性能成本是多少?

在C++类(或其任何父类)中至少有一个虚方法意味着该类将具有虚拟表,并且每个实例都将具有虚拟指针.

所以内存成本非常清晰.最重要的是实例上的内存开销(特别是如果实例很小,例如,如果它们只是包含一个整数:在这种情况下,在每个实例中都有一个虚拟指针可能会使实例的大小加倍.至于虚拟表占用的内存空间,我猜它与实际方法代码占用的空间相比通常可以忽略不计.

这让我想到了一个问题:是否有一个可衡量的性能成本(即速度影响)使方法虚拟化?在每次方法调用时,运行时都会在虚拟表中进行查找,因此如果对此方法进行非常频繁的调用,并且此方法非常短,那么可能会出现可测量的性能损失?我想这取决于平台,但有没有人运行一些基准测试?

我问的原因是我遇到了一个错误,这个错误恰好是由于程序员忘记定义一个虚拟方法.这不是我第一次看到这种错误.我想:我们为什么要添加虚拟关键字,而不是需要时取出时,我们绝对相信这是它的虚拟关键字没有必要?如果性能成本很低,我想我会在我的团队中推荐以下内容:只需在默认情况下将每个方法设置为虚拟,包括每个类中的析构函数,并且只在需要时将其删除.这对你来说听起来很疯狂吗?

c++ performance virtual-functions

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

如何判断python中的连接是否已经死亡

我希望我的python应用程序能够告诉另一端的套接字何时被删除.有这个方法吗?

python sockets

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

C中的MySQL批量更新

MySQL的C API是否支持批量更新?我正在编写一个应用程序,其中大批量处理某些事务.如果在记录过程中我最终为每个插入执行单个调用DB,那将是非常低效的.

C与批处理SQL更新的Java API有什么相似之处吗?

谢谢,

N.

c mysql

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

web.config batch ="false"

在ASP.NET 1.1的编译标记中添加batch ="false"的目的是什么?

c# vb.net asp.net .net-1.1 web-config

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