IISのログ記録アイコンがない|ClassicASPでDB接続ができない

内容

IISのログが出力されていなかったWIN10 ログ記録アイコンがない

・結論
[note]コントロールパネルのWindows の機能の有効化または無効化にて
状態と診断のチェックを入れてインストールする[/note]

http://127.0.0.1/hiyoko/stoado01.aspで確認中
サーバ管理マネージャの設定が必要らしい
http://www.putise.com/server/windows-serevr-2008-r2/ii7-w3c-accesslog
でもWin10では
(1)サーバ管理マネージャをダウンロードした

https://www.microsoft.com/ja-JP/download/details.aspx?id=45520
しかし64ビットではインストールでエラーになる。
ほかにもいくつかインストーラがあったので後で試す。
一旦再起動する

(2)IISも試す
インターネット インフォメーション サービス (IIS) のログ収集を有効にする方法
https://support.microsoft.com/ja-jp/help/313437/how-to-enable-logging-in-internet-information-services-iis

IISで該当のWEBサービスを見るけどログの記録がない。
ネットを参考にするとログの記録があるのに。

設定を確認する
http://www.nyaou.com/iiswindows10-%E3%81%A7-iis%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84-561.html
より
3.WASとW3SVCをサービスから手動で有効にしてみる
ちなみに、WASとW3SVCはサービスでは以下の名前で表示されている。
W3SVC:World Wide Web 発行サービス
WAS:Windows プロセスアクティブ化サービス

[コントロール パネル\すべてのコントロール パネル項目\管理ツール] から「サービス」を開く
実行中だった
しかし、w3c Logging Serviceは停止状態で、手動になっていたので開始にして自動に変更した
でもログが出力されていない。
やはり、IISにログの記録アイコンが表示されていないことに関係しているのかも

IISのエラーログは、
エラーログパス:C:\Windows\System32\LogFiles\HTTPERR\httperr1.log
にあります。

IISにログ記録アイコンがないというのがそもそもの原因である。
Window ボタンを右クリック > コントロールパネル > プログラム > Windows の機能の有効化または無効化
でログについての機能を調べる

すると状態と診断がちぇっくされていなかった。
ここにログについての記載があった
インターネット インフォメーション サービスのWorld Wide Webサービスのところ
の状態と診断以下でした
ここをチェックしてインストールして様子を見る

IISアプリを再起動してみると
ログ記録が出現しました。

これでログが出力されるか様子を見ます。
リサイクルとかOSの再起動はしていない。

その後ログが出力された

ClassicASPでDB接続ができない

結論
いろいろ試してそれでもDB接続ができないときは
TCPIPで動的ポートを使用せず静的ポート1433にすればよい。
SQL構成マネージャーを使用する。
[note]WIN10ではSQL構成マネージャーがスタートメニュにないので、
コンピュータの管理から(スタートメニューの右クリック)
左側にサービスとアプリケーションの項目があるので展開する[/note]

★ASPでストアドを実行させる

結論
DBに接続できないので以降は接続するための奮闘記
簡単に説明すれば、テキストファイルの拡張子をUDLに変更してそのファイルをダブルクリックするとDB接続の設定が表示されるのでWindows認証かSQL認証の設定を入力して接続テストをすればよい。
OKならASPでDB接続ができる。エラーならいろいろと設定を試すしかない。

エラーがでた
(E1)800a0408|文字が正しくありません。
しらべると変数が異なる
文字コードが違う
タブや全角のスペースが入っている
なので
タブを削除した
でもエラー
よくよくみたら
コメントの書き方を間違えていた
–ハイフン2つを入れてコメントはSQLクエリだった
VBSはシングルクォーテーションだった。
(E2)次のエラーが800a0e7a|プロバイダーが見つかりません。

Data Source=localhost\MSSQLSERVER;INITIAL CATALOG=test01;Server=DESKTOP-0P4MIJV\SQLEXPRESS;Integrated Security=True”

80040e21|複数ステップの_OLE_DB_の操作でエラーが発生しました。各_OLE_DB_の状態の値を確認してください。作業は終了しませんでした。

“INITIAL CATALOG=test01;Server=DESKTOP-0P4MIJV\SQLEXPRESS;Integrated Security=True”

だめ ログ
80040e21|複数ステップの_OLE_DB_の操作でエラーが発生しました。各_OLE_DB_の状態の値を確認してください。作業は終了しませんでした。

どうやらActiveConnectionの設定がおかしいらしい。
ローカルサーバにWindows認証で接続したい
Provider = SQLNCLI; Server = DESKTOP-0P4MIJV\SQLEXPRESS;database = test01;Integrated Security=True

だめ ログ
800a0e7a|プロバイダーが見つかりません
つまりProviderプロバイダーの設定が悪いのか。

ではData Source=でやってみるというか
そもそもProvider;Data Source;でワンセットみたいだ
Provider = SQLOLEDB.1;Data Source = DESKTOP-0P4MIJV\SQLEXPRESS;database = test01;Integrated Security=True

()80040e21|複数ステップの_OLE_DB_の操作でエラーが発生しました。

ということは、
まずはプロバイダーが悪いのか、それともData Souceが悪いのかを突き詰めないといけない
なので、SQLOLEDBがOKかどうかを調べる
プロバイダーのエラーではないので、Providerの設定はOK.
ということは、Data Sourceの設定が悪いということになる。
ここで、以前VBで試したソースがあるのでそれをグーグル共有から拾って調べる

次に
Provider = SQLOLEDB.1;Server=DESKTOP-0P4MIJV\SQLEXPRESS;database = test01;Integrated Security=True
Data Sourceの記述をServerに変えてみた
↓だめ
複数ステップの_OLE_DB_の操作でエラーが発生しました

Windows認証をやめてSQL認証に変えてみる。別のDBをSQL認証とする
もしかして、認証設定ではなくて、他のASP構文でエラーなのか?
まずはググってみる

管理ツールで
「DSN(ODBCデータソース)で次のオプションをONにすることによって正常に処理されるようになります。」
とあった
Don’t optimize column width:1
Return matching rows:2
コントロール パネル\すべてのコントロール パネル項目\管理ツール
でもSQLSERVERに関する登録がなかったので使っていない??

詳しくわからないが、
Windows認証が悪いのかSQL認証ならうまくいくのか先に確かめたほうが解決しやすいので、
SQL認証を試そうと思う。

まず新しいDBを作成してみる。
そしてテーブルを作って
ストアドを作成する。
そしてまたASPで実行する

新しいDB:stdbtest01を作成して、
右クリックのプロパティから権限を選択して、表示されたページのデータ権限の表示をクリックするとまた
別の画面に変わるので、その画面の権限を選択するとSQL認証の設定ができる

と思ったけど、SQL認証の意味がよくわからない。
つまりサーバのSQL認証と
サーバの中のDBの認証が個別なのかどうなのか?

まずは、ASPのDB接続だけを活かしてそこでエラーになるかを調べる。
つまり接続ができるところだけにして実行させる
やっぱりエラーになるので、接続時点で失敗している。
80040e21|複数ステップの_OLE_DB_の操作でエラーが発生しました。

これもだめ プロバイダーをSQLCLIENTに変えてみた
“Provider=sqlclient;Server=DESKTOP-0P4MIJV\SQLEXPRESS;database = test01;Integrated Security=True”
でもだめ
やっぱりProviderはOKで
SERVERがおかしいということか?
それとも足りないのか?
data sourceも違うね。data sourceはDBのデータソースmdbだ。

“Provider=sqlclient;Data Source=localhost\MSSQLSERVER;Server=DESKTOP-0P4MIJV\SQLEXPRESS;database = test01;Integrated Security=True”

800a0e7a|プロバイダーが見つかりません。
になっておかしいことになる。
以下はだめな例
“Provider=sqlclient;Server=DESKTOP-0P4MIJV\SQLEXPRESS;database=test01;Integrated Security=True”
Provieerをとっても同じ
“Server=DESKTOP-0P4MIJV\SQLEXPRESS;database=test01;Integrated Security=True”
SERVERをとってお同じ
“Provider=sqlclient;database=test01;Integrated Security=True”

だめだ。
そもそもActiveConnectionでいいのかを調べる

もう一度
動画を参考にしてみた
セキュリティのユーザでWindows認証ユーザである自分をみて
今回のDBを標準で見るようにした。
これで一度試す。
やっぱりだめ。
でもエラーが変わった。
|8|800a01a8|オブジェクトがありません。:_'[string:__Provider=sqlclient;S_]

よくわからない。
それで、SQL認証のユーザtestuserを作成した
パスワードは1234にしておく。自宅で作業なのでこれでよい。

SQL認証にしたけれどだめですね

Windows認証をまた調べる
DefaultAppPoolでログインユーザを作成するらしい

でもsql serverが存在しないか、アクセスが拒否されましたとなる
これは
拡張子UDLファイルを作ってそこから設定入力をしてテスト接続したときに
エラーが表示される。
これはたぶんASPで接続したときに表示されるエラーと同じ

SQL構成マネージャー、WIN10のスタートメニューにないぞ

コンピュータの管理
左側にサービスとアプリケーションの項目があるので展開する
するとSQLSERVER構成マネージャーがある
そのなかに
SQLSERVERネットワークの構成の中にSQLEXPRESSのプロトコルがあって
共有メモリ
名前付きパイプ
TCP/IPがある
この名前付きパイプとTCP/IPを有効にする
でもだめだった。

動的ポートではなく静的ポート1433を使用
らしい
SQL構成マネージャーでTCPの3番めを1433にした。
動的ポートを0を削除したがだめ
しかし、調べるとA11のTCPを1433にするらしい
そこでA11を
TCPポート1433
TCP動的ポート0を削除して空欄にしたら接続できた。
なんだそれ

やっとここまでできた。
2日かかった。
静的ポートTCPポートA11で

こちらの記事もどうぞ