WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

SSMS の楽観的同時実行制御

by WebSurfer 2017年2月11日 15:52

SQL Server Management Studio(以下、SSMS と書きます) を使ってデータの編集ができますが、その際に楽観的同時実行制御がかかっているようです。(SQL Server 2008 Express SP4 で試しました)

SSMS の楽観的同時実行制御

上の画像が SSMS を使ってのデータの編集中に楽観的同時実行制御に引っかかって警告のダイアログが表示されたところです。

上の例は、EmployeeID = 1 の LastName を編集して他の行に移動した際、編集されたデータを使ってデータベースの更新(UPDATE クエリの発行)をトライしたが、SSMS にデータを表示してから UPDATE クエリが発行されるまでの間に他のユーザーがデータを変更していたという状況です。

SSMS での編集に楽観的同時実行制御がかかるって知ってました? 実は自分は知らなかったです。後勝ちルールになると思ってました。(汗)

このデータを更新するアプリと SSMS を一緒に動かしていたら上の画像のダイアログが出てきたので、楽観的同時実行制御がかかっていることを初めて知ったという次第です。

新発見ということでブログに書いておくことにしました。知らなかったのは自分だけかもしれませんが。(笑)

Tags: ,

SQL Server

WCF サービスで HTTP 404.17 エラー

by WebSurfer 2017年2月5日 17:25

先日買った Windows 10 Pro 64-bit のノート PC に旧マシンから開発環境を移しています。

WCF サービスをホストしている ASP.NET Web Forms アプリをソリューションごとコピーして .aspx ページは問題なく動くようになったのですが、何故か WCF サービスだけが動きません。(汗)

ブラウザから .svc ファイルを要求すると HTTP 404.17 エラーとなります。エラーメッセージは「要求されたコンテンツはスクリプトであり、静的ファイル ハンドラーで処理されない可能性があります。」でした。

IIS のハンドラマッピングをみると .svc 用のハンドラは 3 つ存在していたのですが、何故静的ファイルハンドラーにマップされたのでしょう?

3 時間ぐらいハマってしまったのですが、ググって調べて stackoverflow の記事 What causes WCF Error 404.17 to be shown? にたどり着きました。

その記事の質問欄に "I then finally fixed it by enabling "HTTP Activation" (as suggested here)" とあります。その here のリンク先が HTTP Error 404.17 - Not Found で、その記事の回答にある画像すなわち ASP.NET 4.5 の WCF サービスの HTTP アクティブ化が正解のようです。

自分の Windows 10 Pro で該当するのは、以下の画像の「Windows の機能の有効化または無効化」で [.NET Framemwork 4.6 Advanced Services] => [WCF サービス] => [HTTP アクティブ化] のようですので、それにチェックを入れて有効化してみました。

WCF サービスの HTTP アクティブ化

結果、ブラウザから .svc ファイルを要求すると応答が返ってくるようになり、アプリから WCF サービスのメソッドを呼んだ場合も正常に応答が返ってくるようになりました。やはりこれが正解だったようです。

IIS のハンドラマッピングをみると HTTP アクティブ化前には 3 つしかなかった .svc 用のハンドラが、以下の画像のように 6 つに増えています。

ハンドラマッピング

HTTP アクティブ化の前/後でどう変わったのかはっきりしませんが、3 つ増えたのは間違いなくて、たぶん 4.0 用が追加されたのだと思います。

また、上に紹介した stackoverflow の記事に、

"The Http Activation Module (System.ServiceModel.Activation.HttpModule) is registered in the machine.config file. .NET 2.0 and .NET 4.0 have separate machine.configs. The Http Activation feature also exists for both .NET versions separately."

・・・と書いてありましたが、HTTP アクティブ化によって、ハンドラの追加だけではなく、.NET 4 用の Http Activation Module の有効化も行われたのかもしれません。

(ググってヒットした記事の中には ServiceModel 登録ツールを使って解決したという話もありました。HTTP アクティブ化もこのツールを使っているのかもしれません。ただし、確認はできていません。ご参考まで)

Tags: ,

ASP.NET

MySQL をインストールしました(その 2)

by WebSurfer 2017年1月31日 21:00
注意
最新版は不明ですが、この記事の MySQL Installer 5.7.17 を使って Connector/NET をインストールすると、MySql.Data.dll のバージョンの不一致で、Visual Studio の TableAdapter 構成ウィザードで不具合が出ます。詳しくは別の記事「MySQL での TableAdapter 構成ウィザード不具合」を見てください。

先日買った Windows 10 Pro 64-bit のノート PC に MySQL をインストールしましたので、その顛末を備忘録として書いておきます。インストールしたのは現時点での最新版 MySQL Community Server 5.7.17 と Connector/Net 6.9.9 です。

先の記事「MySQL をインストールしました」で MySQL Community Server 5.5.11 と Connector/Net 6.3.6 をインストールした時の概略を書きましたが、6 年近く昔の話なので、その時とはかなりやり方が変わっていました。

まず、MySQL のダウンロードサイト MySQL Community Downloads に行き、そこから順次リンクをたどればインストーラーのダウンロードページ Download MySQL Installer が見つかると思います。

2017/1/27 時点では Generally Available (GA) Releases として MySQL Installer 5.7.17 というバージョンが表示されていました。このインストーラーを使って、Server 本体, Connector/NET はもちろんすべての製品をインストールできるそうです。

また、Windows (x86, 32-bit), MySQL Installer MSI とありますが、それは "Note: MySQL Installer is 32 bit, but will install both 32 bit and 64 bit binaries." というこで、64-bit OS にもこれを使ってインストールできます。

ダウンロードできるファイルは 2 種類あってネットに接続できる環境か否かで選ぶらしいです。自分は mysql-installer-web-community-5.7.17.0.msi(ネットに接続してダウンロードしながらインストールするバージョン)を使いました。

以下にインストールするときに表示された画像を貼って要点を書いておきます。

(1) ライセンス条項に合意

License Agreement

I accept the license terms にチェックを入れて Next をクリックします。

(2) セットアップ内容の選択

Choosing a Setup Type

Developer Default で十分かもしれませんが、万一不足していて後で追加インストールすることになるのも面倒なので Full を選択しました。

(3) 要件のチェック

Check Requirements

先の「(2) セットアップ内容の選択」画面で選んだ内容でインストール先の PC が要件を満たしているかをチェックしているようです。Python はインストールしてないので当然ですが、Python 3.4 is not installed という警告が出ます。無視して Next をクリックします。

(4) インストール開始

Installation

Execute をクリックするとダウンロードとインストールが始まります。

(5) インストール完了

Installation

ダウンロードとインストールには少々時間がかかります。完了すると上の画像のようにそれぞれの項目にチェックマークがつきます。

(6) 製品の構成

Product Configuration

インストールした製品の構成設定を行います。

(7) タイプとネットワーク

Type and Networking

開発マシンで使用するので Development Machine を選択します。Named Pipe と Shared Memory にはデフォルトではチェックが入ってませんが、入れておきました。ファイアウォールの穴あけはデフォルトでチェックが入っていて自動的にやってくれるようです。

(8) MySQL ユーザー詳細情報

MySQL User Details

設定したパスワードは忘れないように覚えておいてください。自分は開発マシンのログイン用と同じパスワードを入力したのですが Week だそうです。(汗) 無視してそのまま続けることはできます。

(9) MySQL サーバーへのアカウント登録

Accounts and Roles

先の「(8) MySQL ユーザー詳細情報」画面で入力したものと同じパスワードを入力し、Add User をクリックします。

(10) Windows Service

Windows Service

PC の Windows OS 上で MySQL を実行するサービス等の設定を行います。画面の通りのデフォルトでいいと思います。

(11) プラグインの設定

Plugins and Extensions

ドキュメントをオンラインで読んでくるための設定を行うようです。画面の通りの設定でいいと思います。

(12) 構成設定の適用

Apply Server Configuration

Execute をクリックすると画面に表示されている各項目の設定が自動的に行われます。

(13) 設定の完了

Apply Server Configuration

構成設定が完了すると各項目にチェックマークが入ります。

(14) サーバーへの接続

Connect to Server

先の「(8) MySQL ユーザー詳細情報」画面で設定したユーザー名とパスワードで接続を試みるということのようです。

(15) 接続の確認

Connect to Server

有効なユーザー名とパスワードを入力して Check をクリックすると Connection successful と表示されます。

(16) サーバー構成の適用

Apply Server Configuration

Execute をクリックすると画面に表示されている各項目が自動的に実行されます。

(17) サーバー構成の完了

Apply Server Configuration

構成設定が完了すると各項目にチェックマークが入ります。

(18) 製品の構成

Product Configuration

上の「(17) サーバー構成の完了」画面で Finish をクリックすると「(6) 製品の構成」画面に戻ります。

(19) 完了

Installation Complete

上の「(18) 製品の構成」画面で Next をクリックするとインストールと設定が完了します。一連の作業で記録されたログがクリップボードにコピーできますので、残しておいた方がよさそうです。

(20) インストールされた製品

MySQL Installer - Community というツールも一緒にインストールされるので、それを起動すると画面のように製品一覧がバージョンと共に表示されます。



最後に、インストールしてみて分かった新発見(というより自分が知らなかっただけですが)を書いておきます。

  1. Connector/NET は Any CPU でコンパイルされている。自分でも corflags.exe を使って確認しました。おかげで ODP.NET のように 32/64-bit の違いに悩むことはなさそうです。
  2. Connector/NET 6.9.9 には .NET 4+ 用の .dll しか含まれない。バージョン 6.4.x から .NET 3.5 以下用の .dll は含まれなくなったらしいです。自分が使っているレンタルサーバーは .NET 3.5 までにしか対応しておらず、それの保守環境を作るのにちょっと困りました。
  3. mysql というコマンドはなくなった模様。旧マシンで行ったようにコマンドラインから mysql と入力して立ち上げることはできなくなっています。代わりに MySQL 5.7 Command Line Client というのを起動して使うことになります。
  4. mysqldump というコマンドもなくなった模様。代わりに mysqldbexport というユーティリティを使うらしいです。その他 mysqldbimport など多々ユーティリティが用意されています。

Tags: ,

MySQL

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年5月  >>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar