Udostępnij za pośrednictwem


How to: Enable or Disable a Server Network Protocol (SQL Server PowerShell)

TCP i potoków nazwanych protokoły sieciowe zostały zainstalowane przez SQL Server Ustawienia, ale może nie być włączona. Może być włączona lub wyłączona za pomocą następujących skryptów PowerShell lub przy użyciu protokołów sieciowych SQL Server Menedżer konfiguracja. Należy zatrzymać i ponownie uruchomić SQL Server Database Engine dla protokół zmiany zostały wprowadzone.

Aby uzyskać ogólne informacje na temat PowerShell zobacz SQL Server PowerShell Overview. Aby uzyskać więcej informacji dotyczących zarządzania przy użyciu protokołów SQL Server Menedżer konfiguracja, zobacz Jak Włącz lub wyłącz protokół sieciowy serwera (Menedżer konfiguracja programu SQL Server).

The SQL Server PowerShell (SQLPS.exe) utility starts a PowerShell sesja with the SQL Server PowerShell dostawca and cmdlets loaded and registered. Gdy uruchomiony PowerShell (PowerShell.exe) zamiast SQL Server PowerShell, najpierw wykonać następujące instrukcje ręcznego załadować wymaganej zestawów.

# Load the assemblies
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")

Następujące skrypty Włączenie protokołów.Aby wyłączyć protokołów, należy ustawić IsEnabled właściwości do $false.

Aby włączyć protokół sieciowy serwera za pomocą programu SQL Server PowerShell

  1. Za pomocą administratora uprawnienia Otwórz polecenie wyświetlany był monit.

  2. Aby rozpocząć SQL Server PowerShell, w wiersz polecenia wpisz sqlps.exe.

  3. Wykonać następujące instrukcje, aby włączyć zarówno protokół TCP i nazwane potoki protokołów.Zamień <computer_name> nazwą komputera, na którym jest uruchomiony SQL Server. Jeśli konfigurujesz wystąpienie nazwane zastąpić MSSQLSERVER o nazwie instancji.

    $smo = 'Microsoft.SqlServer.Management.Smo.'
    $wmi = new-object ($smo + 'Wmi.ManagedComputer').
    
    # List the object properties, including the instance names.
    $Wmi
    
    # Enable the TCP protocol on the default instance.
    $uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"
    $Tcp = $wmi.GetSmoObject($uri)
    $Tcp.IsEnabled = $true
    $Tcp.Alter()
    $Tcp
    
    # Enable the named pipes protocol for the default instance.
    $uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']"
    $Np = $wmi.GetSmoObject($uri)
    $Np.IsEnabled = $true
    $Np.Alter()
    $Np
    

Aby skonfigurować protokoły dla komputera lokalnego

  • Gdy skrypt jest uruchamiany lokalnie i konfiguruje na komputerze lokalnym SQL Server PowerShell wprowadzić skrypt bardziej elastyczne dynamicznie określania nazwy komputera lokalnego. Aby pobrać nazwy komputera lokalnego, należy zastąpić ustawienia linii $uri Zmienna z następującego wiersza.

    $uri = "ManagedComputer[@Name='" + (get-item env:\computername).Value + "']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"
    

Aby ponownie uruchomić aparat bazy danych przy użyciu programu SQL Server PowerShell

  • Po włączeniu lub wyłączeniu protokołów, należy zatrzymać i ponownie uruchomić Database Engine Aby zmiany zostały wprowadzone. Wykonać następujące instrukcje dotyczące zatrzymywania i uruchamiania domyślnego wystąpienie przy użyciu SQL Server PowerShell. Aby zatrzymać i uruchomić Zamień wystąpienie z nazwą 'MSSQLSERVER' z 'MSSQL$<instance_name>'.

    # Get a reference to the ManagedComputer class.
    CD SQLSERVER:\SQL\<computer_name>
    $Wmi = (get-item .).ManagedComputer
    # Get a reference to the default instance of the Database Engine.
    $DfltInstance = $Wmi.Services['MSSQLSERVER']
    # Display the state of the service.
    $DfltInstance
    # Stop the service.
    $DfltInstance.Stop();
    # Wait until the service has time to stop.
    # Refresh the cache.
    $DfltInstance.Refresh(); 
    # Display the state of the service.
    $DfltInstance
    # Start the service again.
    $DfltInstance.Start();
    # Wait until the service has time to start.
    # Refresh the cache and display the state of the service.
    $DfltInstance.Refresh(); $DfltInstance