自动启用命名管道& TCP / IP协议SQL Server 2008 R2

时间:2012-07-05 11:41:45

标签: sql-server-2008 automation named-pipes tcp-ip silent-installer

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

2 个答案:

答案 0 :(得分:0)

我找到了解决方案,试过了。注册表中SQL Server的协议信息存储在此处:

  

HKLM \ Software \ Microsoft \ Microsoft SQL   服务器\ MSSQL10_50。的 MSSQLSERVER \的MSSQLServer \ SuperSocketNetLib

这适用于MSSQLSERVER实例,如果是不同的实例,则以粗体显示的注册表路径将替换为该实例的名称。

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

答案 1 :(得分: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()

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

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