3

「インストーラー」と呼ばれるC#win Formアプリがあり、IIS、SQL Server、AVG-Freeなどのさまざまなサードパーティソフトウェアをクライアントのシステムにサイレントインストールします。私たち自身の製品と一緒に。名前付きパイプとTCP/IPプロトコルを自動的に有効にする必要があります。これには、バッチファイルを使用したSQL Server(SQLEXPRESS)サービスの再起動も必要です。またはC#がフォームアプリに勝ちます。または、適切なスイッチを提供して、コマンドラインからSQLServerをインストールしている間。
私は検索しましたが、これは非常にユニークな要件です。

4

2 に答える 2

1

私は解決策を見つけ、それを試しました。レジストリ内のSQLServerのプロトコル情報はここに保存されます:

HKLM \ Software \ Microsoft \ Microsoft SQLServer\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 に答える