質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1338閲覧

pyodbcからSQL Server EXPRESSへのアクセス

Fruka.wawa

総合スコア17

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/04/28 09:24

実現したいこと

pyodbcからSQL Server Expressにアクセスしたい。

下記のVBSで接続できたので、pythonでも試したいと思いました。

VBS

1Const CnStr = "Provider=SQLOLEDB;Data Source=aaa.bbb.ccc.ddd,eeeee;Initial Catalog=xxxx;UID=yyyy;PWD=zzzz;" 2Dim DBcn 3Set DBcn = CreateObject("ADODB.Connection") 4DBcn.Open CnStr

発生している問題・エラーメッセージ

connect= pyodbc.connect(…) pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが 拒否されました。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (1326); [08001] [Microsoft][ODBC SQL Server Driver]接続文字列の属性が正しくありません。 (0)')

該当のソースコード

Python

1import pyodbc 2connect= pyodbc.connect('DRIVER={SQL Server};' + \ 3 'SERVER=aaa.bbb.ccc.ddd\SQLEXPRESS01;' + \ 4 'PORT=eeeee;' + \ 5 'DATABASE=xxxx;' + \ 6 'UID=yyyy;' + \ 7 'PWD=zzzz')

試したこと

文字列のエスケープ周りか、
あるいはサーバのIPではホスト名じゃないとダメか、などを
試行錯誤しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Fruka.wawa

2023/05/02 03:51

localhostからpyodbcでSQLServerにアクセス→〇K リモート(Win10)からVBSでSQLServerにアクセス→〇K リモート(Win10)からsqlcmdでSQLServerにアクセス→〇K リモート(Win10)からpyodbcでSQLServerにアクセス→NG リモート(Win10)に一度DSNを設定してpyodbcでSQLServerにアクセス→OK リモート(Win10)でDSNを削除してpyodbcでSQLServerにアクセス→OK 別のリモート(Win10)からpyodbcでSQLServerにアクセス→NG もう少し模索します。。。
guest

回答1

0

自己解決

接続文字列によるアクセスを断念してDSNでアクセスすることにしました。
connect= pyodbc.connect('DSN=DSNAME;UID=yyyy;PWD=zzz')

接続エラー発生時はバッチファイルを起動してフォローすることにします。
odbcconf /A {CONFIGDSN "SQL Server" "DSN=DSNAME|DATABASE=xxxxx|SERVER=HOSTNAME\SQLEXPRESS01,eeeee"}

閲覧してくださった方、ありがとうございました。

投稿2023/05/02 05:13

Fruka.wawa

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問