サーバー ネットワーク プロトコルの有効化または無効化

適用対象: はいSQL Server (サポートされているすべてのバージョン)

すべてのネットワーク プロトコルは SQL Server セットアップによってインストールされますが、必ずしも有効になっているとは限りません。 このトピックでは、 SQL Server で SQL Server 構成マネージャーまたは PowerShell を使用してサーバー ネットワーク プロトコルを有効または無効にする方法について説明します。 変更を有効にするために データベース エンジン を停止し、再起動する必要があります。

重要

SQL Server Express のセットアップ時に、ログインは BUILTIN\Users グループに追加されます。 これにより、コンピューターの認証されたすべてのユーザーが public ロールのメンバーとして SQL Server Express のインスタンスにアクセスできるようになります。 BUILTIN\Users ログインを安全に削除して、 データベース エンジン アクセスを、個別のログインを持つコンピューター ユーザーまたはログインを持つ他の Windows グループのメンバーに制限できます。

警告

SQL Server 2014 (12.x) までの SQL Server および SQL Server 向けの Microsoft データ プロバイダーは、既定で TLS 1.0 および SSL 3.0 のみをサポートしています。 オペレーティング システムの SChannel レイヤーを変更して異なるプロトコル (TLS 1.1、TLS 1.2 など) を適用する場合、こちらに記載されている SQL Server に TLS 1.1 および 1.2 のサポートを追加する適切な更新プログラムをインストールしていなければ、SQL Server への接続は失敗する可能性があります。 SQL Server 2016 (13.x) 以降、SQL Server のすべてのリリース バージョンには TLS 1.2 のサポートが含まれているため、更新プログラムをさらにインストールする必要はありません。

このトピックの内容

SQL Server 構成マネージャーの使用

サーバー ネットワーク プロトコルを有効にするには

  1. SQL Server 構成マネージャーのコンソール ペインで、 [SQL Server ネットワークの構成] を展開します。

  2. コンソール ペインで、 [ <instance name> のプロトコル] をクリックします。

  3. 詳細ペインで、変更するプロトコルを右クリックし、 [有効化] または [無効化] をクリックします。

  4. コンソール ペインで、 [再起動] をクリックします。

  5. 詳細ペインで、 [SQL Server ( <instance name> )] を右クリックします。 [再起動] をクリックして、SQL Server サービスを停止し、再起動します。

SQL Server PowerShell の使用

PowerShell を使用してサーバー ネットワーク プロトコルを有効にするには

  1. 管理者権限を使用してコマンド プロンプトを開きます。

  2. タスク バーから Windows PowerShell を起動するか、[スタート] ボタンをクリックし、[すべてのプログラム]、[アクセサリ]、[Windows PowerShell]、[Windows PowerShell] の順にクリックします。

  3. Import-Module "sqlps" 」と入力して、sqlps モジュールをインポートします

  4. 次のステートメントを実行して TCP プロトコルおよび名前付きパイプ プロトコルの両方を有効にします。 <computer_name> を、 SQL Serverを実行しているコンピューターの名前に置き換えます。 名前付きインスタンスを構成する場合は、 MSSQLSERVER をインスタンス名に置き換えます。

    プロトコルを無効にするには、 IsEnabled プロパティを $falseに設定します。

    $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  
    

ローカル コンピューターのプロトコルを構成するには

  • スクリプトをローカルで実行してローカル コンピューターを構成する場合、 SQL Server PowerShell ではローカル コンピューター名を動的に判断でき、スクリプトの柔軟性が向上します。 ローカル コンピューター名を取得するには、 $uri 変数の行の設定を次の行に置き換えます。

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

SQL Server PowerShell を使用してデータベース エンジンを再起動するには

  • プロトコルを有効または無効にした後は、 データベース エンジン を停止してから再起動して、変更を有効にする必要があります。 SQL Server PowerShell で既定のインスタンスを停止してから起動するには、次のステートメントを実行します。 名前付きインスタンスを停止してから起動するには、 'MSSQLSERVER''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