sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2005 および 2008 で TCP を有効にするためのレジストリ設定は何ですか?

    レジストリを直接変更する正当な理由がない限り、WMI の使用を検討することをお勧めします。 . WMI は、よりバージョンにとらわれない実装を提供します。 System.Management から WMI にアクセスできます。 名前空間。次のようなコードを作成できます。

    public void EnableSqlServerTcp(string serverName, string instanceName){ ManagementScope scope =new ManagementScope(@"\\" + serverName + @"\root\Microsoft\SqlServer\ComputerManagement"); ManagementClass sqlService =new ManagementClass(scope, new ManagementPath("SqlService"), null); ManagementClass serverProtocol =new ManagementClass(scope, new ManagementPath("ServerNetworkProtocol"), null); sqlService.Get(); serverProtocol.Get(); foreach (serverProtocol.GetInstances() の ManagementObject prot) { prot.Get(); if ((string)prot.GetPropertyValue("ProtocolName") =="Tcp" &&(string)prot.GetPropertyValue("InstanceName") ==instanceName) { prot.InvokeMethod("SetEnable", null); } } uint sqlServerService =1; uint sqlServiceStopped =1; foreach (sqlService.GetInstances() の ManagementObject インスタンス) { if ((uint)instance.GetPropertyValue("SqlServiceType") ==sqlServerService &&(string)instance.GetPropertyValue("ServiceName") ==instanceName) { instance.Get(); if ((uint)instance.GetPropertyValue("State") !=sqlServiceStopped) { instance.InvokeMethod("StopService", null); } instance.InvokeMethod("StartService", null); }}}  

    このコードは、System.Management.dll へのプロジェクト参照を想定しています。 および次の using ステートメント:

    System.Management を使用;  

    Sql プロトコル ブログには 記事 があります 上記のコードが何を行っているかについて詳しく説明します。

    注:ファイアウォールがポートをブロックしている場合でも、TCP 経由でサーバーにアクセスすることはできません。



    1. PL / SQLMail_ClientAPIを使用してメールボックスからメッセージを取得する

    2. CREATE TABLE new_table_name LIKE old_table_name with old_table_name's AUTO_INCREMENT values

    3. '%'のように使用し、NULL値をNUMBER列と一致させます

    4. TO_CHAR(number)関数はORA-01722を返します:無効な数値