コンピュータ」カテゴリーアーカイブ

VS2008で作ったCLR関数やSPをSQL Server 2005に登録できない

Visual Studio 2008でアセンブリを作成し、その関数をSQL Server 2005でCLR関数(CREATE FUNCTION)やCLRストアドプロシージャ(CREATE PROCEDURE)として登録しようとすると、以下のようなエラーになります。

メッセージ 6505、レベル 16、状態 1、プロシージャ ProcedureName、行 1
型 ‘ClassName’ がアセンブリ ‘AssemblyName’ に見つかりませんでした。

どうしたものかと途方に暮れたりもしましたが、結局原因がわかりました。
実はクラスをnamespaceに入れていたのですが、これだとEXTERNAL NAMEの指定を次のようにしなければなりません。

AssemblyName.[NamespaceName.ClassName].StaticMethodName

このようにしたくないなら、クラスをnamespaceに含めないようにするのがいいようです。そうすれば素直に

AssemblyName.ClassName.StaticMethodName

のようにできます。

参考: CLR integration – Could not find Type ‘??’ in assembly ‘??’.

実はこの問題、プロジェクトを新規作成するときにSQL Server プロジェクトを選択しておけば、あまりトラブルにはなりません。プロジェクトにCLRストアドプロシージャやCLRユーザ定義関数用のクラスを追加すると、追加されるソースのひな形がnamespaceの指定が入っていないものになるからです。
しかしSQL Serverプロジェクトは参照の追加に制限があるので使い勝手が悪く、私はほとんど使っていません。そのおかげでこんな苦労をしたわけです。

XP上でログオン画面表示中にリモートシャットダウンがうまく動かない

Windows XP(SP2で確認)のマシンに対して、Win32 APIのInitiateSystemShutdown()やWMIのWin32Shutdown()を使って、リモートから強制的にログオフの上シャットダウンしようとした場合、ログオン画面でパスワードを間違え、「ログオンできません」といったダイアログボックスが表示されている状態では失敗します。
具体的にどのように失敗するかは不定なのですが、一例としては、リモートシャットダウンをかけると、背後のパスワード等の入力用ダイアログボックスは消えますが、「ログオンできません」の方が消えないままです。ここで[OK]をクリックしてやるとたいていシャットダウンに成功しますが、こんな方法ではもちろんリモートシャットダウンの意味がありません。

回避策はないようです。KBには何も情報がありません。あえていえば以下のものですが、XPの場合SP2で対策済みになってます。

Windows: Remote Shut Down of Client Computer Fails

(追記)XPの場合、Win32Shutdown()はそもそも通常の場合でもうまく動かないことがあるようです。 困ったものだ。

Windows Server 2008のRRAS

 Windows Server 2008でルーティングを有効にしようと「ルーティングとリモートアクセス」で[ルーティングとリモートアクセスの構成と有効化]を選び、ウィザードから[カスタム構成]で[LANルーティング]を有効にしようとしましたが、以下のように表示されて失敗します。

次のエラーのため、ルーティングとリモート アクセス サービスのインストールに失敗しました:

クラスが登録されていません
(80040154)

他にも試してみましたが、どうも[LANルーティング]以外でも同様にエラーになるようです。

以下で去年の7月にbeta 3について質問が上がっており、MSから若干の返事が付いたものの、解決策の提示はなし。

Routung and Remote Access fails to install

例によってバグか…と思いましたが、そうではありませんでした。

実は、サーバーマネージャの[役割]で[役割の追加]をクリックし、ウィザードで[ネットワーク ポリシーとアクセスサービス]の中の[ルーティングとリモート アクセス サービス]をインストールしておけばエラーは出なくなります。やや不親切なつくりだと思いますが、確認したらヘルプには載ってました。

IE 7.0

^Internet Explorer 7.0、Windows Updateでとりあえずインストーラの起動までは半ば強制されるようになったので、急激にシェアが上がるかと予想していましたが、当サイトのGoogle Analyticsのレポートを見る限りではまだIE全体の1/3ほどで、案外少ないようです。
^私はといえば一応7.0に上げてはいますが、6.0よりかなり使いにくくなった気がします。更新ボタンや停止ボタン、メニューバーの表示位置が変で、しかもそれを変更できません。
^ま、私はFirefoxがメインなので、あまり深刻な問題にはなっておりませんが。問答集でruby要素(ふりがなを振るタグ、言語ではない)を使っているのですが、Firefoxではそれに対応してないのだけが残念です。
^当サイトではIEのシェアが80%超、Firefoxは15%くらいですから、私が普段見ているのとは微妙に違った画面をご覧になっている方のほうが多いということになりますね。もっとも、私もそうしているように、NoScriptでgoogle.comのJavaScriptを止めているとカウントされないので、本当はもう少し多いのかも知れません。

MS-IMEでプロパティが設定できない

Windows Server 2008、開発環境として使っていくつもりで、仮想環境でない方でもインストールしました。RAMは2GBしかないけどx64版です。

で、本格的に使い出してみると不具合が一つ。Office 2007付属のMS IME 2007(正確にはMS Office IME 2007というべきかも)でプロパティの設定や単語の登録をしようとすると、「この機能は、スタンダード権限を持つアプリケーションからのみ利用できます。スタンダードユーザー権限を持つアプリケーションから起動してご利用ください。」と出るだけで設定画面が出ません。

この症状、Vistaでも同様に出ていたらしいのですが、そちらでは

  • 「保護モード」になっているInternet Explorer 7使用中にのみ発生
  • Office 2007 SP1で対策済み

ということらしいです。しかし今回の件はInternet Explorer 7を使っていなくてもなりますし、Office 2007 SP1も適用済みです。

IMEのプロパティ(TechNetフォーラム)

このページを見ると、去年の6月には判明していたバグのようですが(こちらはどうやらOS標準のMS IME 2007での事例)、こんな重大な問題を直さずに出荷するとは、さすがはMicrosoft。探した限りではKBにも記述は見つからず。

デフォルトのままで使うとなると、IME ONの状態でスペースが常に全角で入るのが気に入らないのですが、さて、サポート依頼すべきか… でもしたところでどうせ例によって「いつ直るか判りません」だろうしなあ…

(2008.5.30追記)
ややアクセス数の多い記事なので追記を。
相変わらずKBには何も載ってないように思われますが、某掲示板の情報などによりますと、以下の位置にある設定ツールを手動で起動すると一応設定できるようです。ただし、今のところMSKKがサポートする方法ではなく完全無保証です。At your own riskで。

  • MS Office IME 2007の場合、%ProgramFiles(x86)%\microsoft shared\IME12\IMEJP\IMJPUEX.EXE
  • MS IME 2007の場合、%SystemRoot%\System32\IME\IMEJP10\IMJPUEX.EXE

Windows Server 2008入れてみました

今日は珍しくコンピュータネタを。

正式発売前ではあるがMSDNからダウンロードしたWindows Server 2008 Enterprise Edition(WS2008)の日本語版を、Windows Vista x64上のVirtual PC 2007(VPC2007)の環境にインストールしてみた。WS2008のゲストは正式にはVirtual Server 2005 R2 SP1(VS2005)の方でしかサポートされていないのだが、VS2005は何しろ使いづらいので…

  • VPC2007でウィザードを起動して環境を作るとき、WS2008という選択肢はないわけであるが、 「その他」でOKのようだ。しかし、RAMは512MB以上必要。これより少ないとセットアップの冒頭で蹴られる。
  • WS2008のx64版は(というかx64のゲスト環境は)VPC2007側が対応してない。x86版を入れる。ちなみにVS2005でも同様。
  • ISOイメージをDVDとしてVPCでマウントしておけば、もちろんそこからブートできる。Editionの選択はセットアップが始まってからする。
  • セットアップ中に求められる情報がこれまでのOSと比べて少ないようだ。コンピュータ名やIPアドレスなども設定しないで進む。設定する方法もあるのかも知れないが。
  • 最初に情報を入力してインストールが始まれば、後は完了まで入力を求められることはない。
  • 「バーチャルマシン追加機能」は、そのままWS2008にインストールできた。今のところ正常に動作しているように見える。画面はコレを入れなくても大きく(1280 x 1024などに)できるが、マウスカーソルが仮想マシンの中に閉じこめられてしまうのが不便。ちなみに、コレを入れるまでは、マウスカーソルを放して欲し ければ右Altキーを押す。
  • ただし、「バーチャルマシン追加機能」を入れても「マルチメディアオーディオコントローラ」のドライバは見つからない状態になる。
  • 今のところWindows Updateで出てくるものはなし。
  • 初めに出てくる「初期構成タスク」、「ログオン時にこのウィンドウを表示しない」をチェックして消した後また表示したいときは、[スタート]-[ファイル名を指定して実行]で「oobe」。しかし、これは本来、初めからスタートメニューに登録されているべきものではないか?
  • 「Windowsヘルプとサポート」で左ペインに目次のツリーを常時表示しておくモードが用意されていない。Vistaもそうだった。検索で表示したページの目次内の位置をすぐに確認できないのは不便だ。[ヘルプの参照]ボタンを押すと(この名称も直観的でない)、画面が切り替わってそのページの目次内の位置が表示されることにはなっているようだが、実際いくつか試してみるとそうならないページも多々あるようだ。

余談だが、Windowsのコンポーネントでhtml(+ JavaScript?)ベースで作られたと思しきツール類はことごとく完成度が低い。もういい加減にこの手の技術は捨てたらどうか。

wordpressインストール完了

wordpressのインストールがやっと完了した。

雑多なページの方の時かけの記事が一応の完成を見た。というわけで、それを知ってもらうために、他の方の運営されるブログなどに当サイトへのトラックバックを作れるようにしたい。そうすると当方の側でもブログが必要になる。ココログとかはてなとか、無料のサービスを使ってもよかったが、勉強も兼ねてこのサーバにシステムを入れて自前で運用してみることにした。

それで最終的にこの通りwordpressを動かすことができたのだが、なにしろサーバが古いRedHatなので大変だった。前提となるソフトがいろいろあるのだが、RedHatに入っているものは皆古く、それらをソースを取ってきてコンパイルするところから始めなければならない。最初tDiaryを試して機能不足で諦めたりしたこともあって、結局ruby、tDiary、Apache2.2、php5、mysql、libxml2、そしてwordpressと7つもソフトを入れることになった。

元々入っているもので一見大丈夫そうなのに試してみると上手く動かず、調べてみると結局新しいバージョンのものが必要だと判る、といったことが多かったのと、コンパイルに時間が掛かる巨大プログラムが多いのとで、かなり時間が掛かった。しかも大抵なにかしら失敗してしやり直すのでそれが2倍3倍。結局丸2日掛かってしまった。

だが、それだけの甲斐あってこのwordpressはなかなかに高機能だ。