![Microsoft SQL、2つのうち1つだけがLinuxクライアント接続を許可します](https://rvso.com/image/1525404/Microsoft%20SQL%E3%80%812%E3%81%A4%E3%81%AE%E3%81%86%E3%81%A11%E3%81%A4%E3%81%A0%E3%81%91%E3%81%8CLinux%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E6%8E%A5%E7%B6%9A%E3%82%92%E8%A8%B1%E5%8F%AF%E3%81%97%E3%81%BE%E3%81%99.png)
これは少し奇妙です。SQL Server 2016 のインスタンスを 2 つインストールしました。1 つはラップトップ (Windows 10) 上にあり、もう 1 つは隣の部屋の開発サーバー上の VPS (Windows Server 2012) 上にあります。同じサーバー上に、ODBC を備えた Centos 7 の別の VPS があり、両方の SQL インスタンスに接続しようとしています。
私のラップトップへの接続は成功しますが、sqlcmd -S .. -P -Q "query"
Windowsサーバーへの接続はエラーを返します
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Error code 0x102.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
ラップトップの SQL クライアントを使用して Windows サーバーに接続しようとすると、すべてスムーズで、タイムアウトも何も発生しません。
すべてのファイアウォールを無効にしました (Windows マシン /vps とラップトップの両方)。Windows Server 2012 の何が Linux 接続をブロックしてタイムアウトさせ、一方で Windows 接続を許可しているのか疑問に思っています。
答え1
SQL サーバーへの TCP 接続が有効になっていないようです。 https://technet.microsoft.com/en-us/library/hh231672(v=sql.110).aspx デフォルトの設定では、TCP 接続は許可されないはずです。
SQL Express の場合は、リモート接続を有効にする必要がある場合もあります。 http://blog.citrix24.com/configure-sql-express-to-accept-remote-connections/