最近プログラムすることが少なくなった。
と言うより、プログラムさせて貰えてない。
システムとは関係ない仕事ばかりでいい加減、嫌になってきた。
そんな生活をしつつ、たま~にどうしてもプログラムが必要な場面が出てきて作り始める。
離れていると書き方が古かったり、新しいバージョンのVSに慣れていなくてよくエラーが出る。
基幹データベース(SQL Server)からデータを引っ張ってきて整形してExcelファイルで出力するプログラムを作成する予定です。
基幹データベースに接続した時にこんなエラーが出た。
「信頼されていない機関によって証明書チェーンが発行されました」??
今までいろいろSQL Serverを使ったプログラムを作成してきた(主にVB.NET)けどこんなエラーは見たことが無い。
例によって備忘録として解決方法を記録しておく。
ググってみると一般的なエラーらしくて、接続文字列のパラメータが不足しているようだ。(もしくはSQL Serverの設定によるもの)
今の接続文字列では
・データソース名(データベースサーバー名 or IPアドレス)
・データベース名(データベースの名前)
・接続ユーザー名(接続時に使用するユーザーID)
・接続ユーザーに対応したパスワード(接続ユーザーIDで接続するためのパスワード)
の4つを指定してデータベースをオープンした時に怒られる。
足りないパラメータは「TrustServerCertificate」という項目らしい。
この項目はSQL Serverの設定によっても左右されますが、接続時に暗号化するプロセスにおいて、証明書を必要とするような設定の場合、TrustServerCertificateの項目でサーバー証明書の提出をしなくてもいいようにコントロールできるようです。
Microsoftの解説ページを読み進めるとそんなようなことが書いてありましたが、専門用語が多すぎるのと前提知識の敷居が高すぎるせいか、いつも大半理解できないページに感じます。
ちなみにこの項目を書いた場合の接続文字列はこんな感じです。
sqlCon.ConnectionString = "Data Source=" + strDataBaseSV + "; Initial Catalog=" + strDataBaseName + "; User ID=" + strUserName + "; Password=" + strPasword + "; TrustServerCertificate=True"; sqlCon.Open();
これでエラーがでなくなりました。
ただし、この設定は外部からデータベースへ接続する場合のセキュリティに対応する設定ですので、安易にセキュリティを無視した作りに走ると「痛い目」にあう可能性を考慮してください。
今回は内部の環境で利用する社内向けのプログラムへの設定ですのである程度は甘々で行ってます。
以前のプログラムではこんな項目が無くても接続できていたのになんだか腑に落ちない。
以前のプログラムの開発環境はVisual Studio 2015でした。