galthonista’s blog

ギャルが教えるpython💅❤️‍🔥

本番環境で、SQLServerに接続できなーい😫

pyodbcSQLServerに接続しようとしたのに、サーバを起動すると、
SQL Server が存在しないか、アクセスが拒否されました。」
のエラーが発生して起動できない😈なんで😈

そーゆーときに確認すべきことまとめたから、みてって💅

 

結論

1.DBサーバ側で、SSMSでSQLServerBrowserを起動する

2.DBサーバ側で、TCP/IPを有効にする

詳しく見てこ👇

 

 

1.DBサーバ側で、SSMSでSQLServerBrowserを起動する

SQL Server 構成マネージャー(Sql Server Configuration Manager)を開く

SQL Server 構成マネージャー


SQLServerのサービス→SQLServerBrowserが実行中になってるか確認

SQLServerのサービス


停止の場合→右クリックで「開始」を押す。

 

※右クリックで「開始」が押せない人は、いったんWindowsの管理ツールを開いてみて。

サービス→SQLServerBrowserをダブルクリック

コンピューターの管理

→スタートアップの種類を「手動」に変更

SQLServerBrowserのプロパティ

→SQLServerBrowserを右クリックで「開始」

SQLServerBrowserの開始


で、構成マネージャーに戻ってSQLServerBrowser右クリックで「開始」

SQLServerのサービス

 

2.DBサーバ側で、TCP/IPを有効にする

もういっこ確認すること。

SQLServerネットワークの構成→SQLEXPRESSのプロトコルをダブルクリック

SQLEXPRESSのプロトコル


TCP/IPが無効になっている場合は、右クリック→「有効化する」

TCP/IP



さらに、TCP/IP右クリック→「プロパティ」→「IPアドレス」タブの一番下を確認。
IPALLのセクションで、TCPポートを1433に設定
TCP動的ポートは空欄にする✨

IPアドレス

再起動しとくと確実だよ。

これで、サーバを起動しなおしたら、ちゃんとSQLServerに接続できるはず😊

よかったね✨

 

このあとは蛇足だから見なくてもいいよ✊

 

前提

いちおう書いとくけど、今回はこの2つを前提にしてんの。

・あんたが本番サーバにソースを置いてること。
・リモートのDBサーバ(SQLServer)に接続しに行きたいとき。

 

 

ソース

これもいちおう書いとくね。

こんな感じ👇

from django.db import connection
import pyodbc

 

INST = 'DBサーバのIPアドレス'
USER = 'DBのユーザー名'
PASS = 'DBのパスワード'
DB = 'DB名'

 

def execute_sqlserver(sql):
    connection = "DRIVER={SQL Server};SERVER=" + INST + ";UID=" + USER + ";PWD=" + PASS + ";DATABASE=" + DB

    con = None
    try:
        con = pyodbc.connect(connection)

        cursor = con.cursor()
        cursor.execute(sql)
        return cursor.fetchall()

    finally:
        if con is not None:
            con.close()

 

当たり前だけど、'DBサーバのIPアドレス'、'DBのユーザー名'、'DBのパスワード'は正しいものを設定しといて💄

 

んじゃ、今日はこのへんで。ばい✋