Jak Włączyć lub wyłączyć protokół sieciowy serwer (SQL Server PowerShell)

TCP i nazwanych potoków protokoły sieciowe są instalowane przez SQL Server instalacji, ale nie może być włączona.Może być włączona lub wyłączona za pomocą następujących skryptów PowerShell lub za pomocą protokołów sieciowych SQL Server Menedżer konfiguracji.Należy zatrzymać i ponownie uruchomić Aparat baz danych programu SQL Server dla protokół zmiany odniosły efekt.

Aby uzyskać ogólne informacje dotyczące PowerShell, zobacz Omówienie programu SQL Server PowerShell.Aby uzyskać więcej informacji na temat zarządzania za pomocą protokołów SQL Server Menedżer konfiguracji, zobacz Jak Włączyć lub wyłączyć protokół sieciowy serwer (SQL Server Menedżer konfiguracji).

SQL Server PowerShell (SQLPS.exe), narzędzie uruchamia sesja PowerShell z SQL Server PowerShell dostawca i apletów załadowana i zarejestrowana.Gdy uruchomiony PowerShell (PowerShell.exe) zamiast SQL Server PowerShell najpierw wykonać następujące instrukcje ręcznie załadować wymaganego zespołów.

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

Następujące skrypty włączone protokoły.Aby wyłączyć protokołów, zestaw IsEnabled Właściwości, aby $false.

Aby włączyć protokół sieciowy serwer przy użyciu programu SQL Server PowerShell

  1. Za pomocą administratora uprawnienia Otwórz wiersz polecenia.

  2. Aby uruchomić 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> z nazwą komputera z systemem SQL Server.Jeśli konfigurujesz wystąpienie nazwane zastąpić MSSQLSERVER z nazwy 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 komputer lokalny, SQL Server PowerShell można utworzyć skrypt bardziej elastyczne, dynamiczne określając nazwę komputera lokalnego.Aby pobrać nazwy komputera lokalnego, należy zastąpić ustawienia linii $uri zmiennej 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ć Aparat baz danych zmiana odniosła skutek.Wykonać następujące instrukcje, aby zatrzymać i uruchomić za pomocą wystąpienie domyślne SQL Server PowerShell.Aby zatrzymać i uruchomić Zamień wystąpienie nazwane '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