現在、「VSCode」と「pymssql」を使用して「Microsoft SQLServer」への接続を試みています。
下記が現在のコードです。
python
1import pymssql 2 3conn = pymssql.connect(server='localhost', port='1433', user='SA', password='****', database='Master') 4cursor = conn.cursor()
実行してみたところ、下記のエラーが出てしまいました。
Traceback (most recent call last): File "/home/app/work/src/sqlserver.py", line 7, in <module> conn = pymssql.connect(server='localhost', port='1433', user='SA', password='****', database='Master') File "src/pymssql.pyx", line 642, in pymssql.connect pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (localhost:1433)\nNet-Lib error during Connection refused (111)\n')
調べてみたところ、SQL構成マネージャからTCP/IPを有効にすると解決する?とあったので
有効にして再起動してみましたが現象は変わりませんでした。
お時間ある方でこの事象につきまして知識をお持ちの方いらっしゃいましたらご助力頂けますと幸いです。
追記
環境としては、SQLServerをDockerのコンテナで立ち上げています。
また、VSCodeで別の開発用コンテナへリモート接続し、
このSQLServerのコンテナへ接続しようとしています。
PowerShell
1 Name Command State Ports 2----------------------------------------------------------------------- 3mssql-server /opt/mssql/bin/sqlservr Up 0.0.0.0:1433->1433/tcp 4 5 6docker inspect mssql-server 7"PortBindings": { 8 "1433/tcp": [{ 9 "HostIp": "", 10 "HostPort": "1433" 11 }] 12},
DB名がMasterになっているのはとりあえず疎通確認がしたかったのでデフォルトを指定していました。
VSCodeではSQLServerに接続できていますが、別リモートコンテナからのpython接続は失敗してしまうといった状況です。
自己解決方法
Dockerを使用したリモート環境から接続する場合、localhostでは繋がらないそうです。
下記コードを Docker上で実行し、ipを調べました
Docker
1docker inspect コンテナ名
result
1...省略... 2"Networks": { 3 ...省略... 4 "Gateway": "***.**.*.*", 5}
この GatewayのIPをlocalhostの代わりに指定することで、リモート環境からもDockerで構築したDBへ接続することができました。
誰かのお役に立てば幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/04 09:19
2020/09/04 09:22
2020/09/04 09:26