3

我们有一个名为“Installer”的 C# win Form 应用程序,它在客户端系统上静默安装各种 3rd 方软件,如 IIS、SQL Server、AVG-Free;连同我们自己的产品。我需要自动启用命名管道和 TCP/IP 协议,这还需要使用批处理文件重新启动 SQL Server (SQLEXPRESS) 服务;或 C# win 表单应用程序;或者在通过命令行安装 SQL Server 时提供适当的开关。
我已经搜索过,但这是非常独特的要求。

4

2 回答 2

1

我找到了解决办法,试了一下。注册表中 SQL Server 的协议信息存储在这里:

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10_50。MSSQLSERVER \MSSQLServer\SuperSocketNetLib

这适用于 MSSQLSERVER 实例,在不同实例的情况下,粗体的注册表路径将替换为该实例的名称。

它需要重新启动该实例的“SQLServer 服务”。

于 2012-07-06T14:45:10.230 回答
0

如果您想避免摆弄注册表,以下应该可以工作。

sqlps提示:

$smo = 'Microsoft.SqlServer.Management.Smo.'
$wmi = new-object ($smo + 'Wmi.ManagedComputer').
# Enable the TCP protocol on the default instance.
$uri = "ManagedComputer[@Name='" + (get-item env:\computername).Value + "']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"
$Tcp = $wmi.GetSmoObject($uri)
$Tcp.IsEnabled = $true
$Tcp.Alter()
# Enable the named pipes protocol for the default instance.
$uri = "ManagedComputer[@Name='" + (get-item env:\computername).Value + "']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']"
$Np = $wmi.GetSmoObject($uri)
$Np.IsEnabled = $true
$Np.Alter()

然后从旧的重新启动 SQL Server cmd

net stop MSSQLSERVER
net start MSSQLSERVER

参考:https ://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-or-disable-a-server-network-protocol?redirectedfrom=MSDN&view=sql-server-ver15

于 2020-01-13T13:34:57.803 回答