自动启用命名管道和 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的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2012开启TCP/IP登录,并且启用默认的1433端口

禁用命名管道

SQL 2005 作业执行:TCP/IP 与命名管道

SQL server 2005 无法连接到服务器?

如何用sql server搭建服务器数据库服务器

新安装sql server数据库后设置