自动启用命名管道和 TCP/IP 协议 SQL Server 2008 R2
Posted
技术标签:
【中文标题】自动启用命名管道和 TCP/IP 协议 SQL Server 2008 R2【英文标题】:Automatically enable Named Pipes & TCP/IP protocols SQL Server 2008 R2 【发布时间】:2012-07-05 11:41:44 【问题描述】:我们有一个名为“Installer”的 C# win Form 应用程序,它静默在客户端系统上安装各种第 3 方软件,如 IIS、SQL Server、AVG-Free;连同我们自己的产品。我需要自动启用命名管道和 TCP/IP 协议,这还需要使用批处理文件重新启动 SQL Server (SQLEXPRESS) 服务;或 C# win 表单应用程序;或者在通过命令行安装 SQL Server 时提供适当的开关。 我已经搜索过,但这是非常独特的要求。
【问题讨论】:
为什么需要静默安装浏览器?这似乎有点阴暗。我可能会从问题中删除它,因为它没有相关性,但我会认真重新考虑这方面...... @AaronBertrand 我们的产品需要最新版本的 IE 或最新的 Firefox,后者似乎是更好的选择,易于静默安装,无需更新/修复/SP。我们的客户很笨,我们不能给他们任何安装任何软件的指令。 【参考方案1】:我找到了解决办法,试了一下。注册表中 SQL Server 的协议信息存储在这里:
HKLM\Software\Microsoft\Microsoft SQL 服务器\MSSQL10_50.MSSQLSERVER\MSSQLServer\SuperSocketNetLib
这适用于 MSSQLSERVER 实例,在不同实例的情况下,粗体的注册表路径将替换为该实例的名称。
需要重启该实例的“SQLServer服务”。
【讨论】:
【参考方案2】:如果您想避免摆弄注册表,以下应该可以工作。
来自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
【讨论】:
以上是关于自动启用命名管道和 TCP/IP 协议 SQL Server 2008 R2的主要内容,如果未能解决你的问题,请参考以下文章