お久しぶりです、
ITservice雄飛です。
今回は、技術ネタを。
実家の会社の基幹となる小規模なシステムがあるのですが。
WinXP+SQLserver2000+VB6業務用アプリ、という、
すごーく、すごーーーく、古すぎる(運用20年)のシステムでして。
これがそろそろ、本当に壊れそうになってきた。
サポートはもう切れて(もう売ってもないし、サポートもしてくれない)おり。
仕方なく、Excelにて、臨時のシステムを作る事になりました。
Excelって、こういう時、本当に力になるよね…。
先ずは、データの吸出しから。
データベース(SQL Server)に接続する(ADO)
https://excelwork.info/excel/databasesqlserver/
こちらのサイトを参考に致しました。
しかし、繋がらない。
「SQLserverが存在しないか、アクセスが拒否されました」
と出る。
そこで、さらにググってみる。
すると、「接続文字列」、「名前付きパイプ」というキーワードに、
辿り着きました。
SQL Serverが接続に使用しているプロトコルを確認する方法
https://became-free.com/sql-dm_exec_connections/
ローカルで接続する場合、「名前付きパイプ」で接続する事があるらしい。
その場合、接続文字列も変わってくる。
‘VBA code
con = np:sqlhoge
例えるなら、こんな感じで接続が通りました。
しかし、今度はテーブルが見つからないという。
再びググる、ググる。
すると、こんな情報が見つかりました。
【SQL Server】オブジェクト名”○○”が無効です
http://lifesiz.com/adsense/?p=30
SELECT * FROM hoge;
ではなく、
SELECT * FROM hoge_DB.dbo.hoge;
と、データベース名をきちんと明記する。
すると今度は、テーブルにアクセス出来ませんと出る。
また、ググる、ググる。
SQL Serverのオブジェクトに権限を設定する
https://www.atmarkit.co.jp/ait/articles/0111/27/news001.html
これで、必要な権限を付与し、実行すると。
無事、データにアクセスできました。
それでは。