本番環境で、SQLServerに接続できなーい😫
pyodbcでSQLServerに接続しようとしたのに、サーバを起動すると、
「SQL Server が存在しないか、アクセスが拒否されました。」
のエラーが発生して起動できない😈なんで😈
そーゆーときに確認すべきことまとめたから、みてって💅
結論
1.DBサーバ側で、SSMSでSQLServerBrowserを起動する
2.DBサーバ側で、TCP/IPを有効にする
詳しく見てこ👇
1.DBサーバ側で、SSMSでSQLServerBrowserを起動する
SQL Server 構成マネージャー(Sql Server Configuration Manager)を開く
SQLServerのサービス→SQLServerBrowserが実行中になってるか確認
停止の場合→右クリックで「開始」を押す。
※右クリックで「開始」が押せない人は、いったんWindowsの管理ツールを開いてみて。
サービス→SQLServerBrowserをダブルクリック
→スタートアップの種類を「手動」に変更
→SQLServerBrowserを右クリックで「開始」
で、構成マネージャーに戻ってSQLServerBrowser右クリックで「開始」
2.DBサーバ側で、TCP/IPを有効にする
もういっこ確認すること。
SQLServerネットワークの構成→SQLEXPRESSのプロトコルをダブルクリック
TCP/IPが無効になっている場合は、右クリック→「有効化する」
さらに、TCP/IP右クリック→「プロパティ」→「IPアドレス」タブの一番下を確認。
IPALLのセクションで、TCPポートを1433に設定
TCP動的ポートは空欄にする✨
再起動しとくと確実だよ。
これで、サーバを起動しなおしたら、ちゃんと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のパスワード'は正しいものを設定しといて💄
んじゃ、今日はこのへんで。ばい✋