Microsoft関連メモ

SQL Server
レコードの最大サイズ

レコードの最大サイズ 8060 バイトは、超えられますか ? (varchar編)によると、 レコードの最大サイズ(フィールドのサイズ合計)が、8060バイトを超えられないよう・・・。 超えるようなCreate文を発行すると、警告だけ出てテーブルは作成される。

警告: テーブル 'xxxx' が作成されましたが、最大行サイズ (xxxx) が行ごとの最大バイト数 (8060) を超えています。このテーブルの行の INSERT または UPDATE は、結果の行の長さが 8060 バイトを超える場合は失敗します。

けど、そのようなデータを登録した時点で、エラーになるらしい。

ストアド定義が入っているビュー(?)
syscomments

これを見たら、ストアドで特定の列を使ってるかどうかとかを、まとめて検索できる。

Accessからは見えないけど、Common SQL Environmentなど使ったら、CSVエクスポートできる。

Visual Studio

VSSコマンドライン

Visual SourceSafe コマンド ラインの利用

VB/VBA

マウスホイールでスクロールできない

VBAでないVBでは、Visual Basic 6.0 IDE でマウス ホイール イベントが機能しないの手順1でできる。

Word/Excelなど、VBAIDEでは、記載通りの手順では「アドイン」にMouse Wheel Fixが表示されない。解凍されたファイルにある「VBA Mouse Wheel Fix.reg」を実行すると、VBA IDEのアドインに表示されるようになる。

「アドイン」ダイアログでは、「ロード・アンロード」「起動時にロード」は、両方にチェックを付けると有効になる。 アドインダイアログ

Excel

振り仮名取得

文字列から、振り仮名を取得する関数。

Public Function GetFurigana(ByVal xas_Source As String) As String
GetFurigana = Application.GetPhonetic(xas_Source)
End Function

Access

ランタイム環境でのテスト

Accessのショートカットに「/runtime」スイッチをつけることで、Accessランタイムだけが入ったマシンでの動作をエミュレートできるとのこと。

集計結果のデータ型指定
SELECT COL1, COL2 AS COL2_SUM
INTO TARGET_T
FROM SOURCE_T
GROUP BY COL1

てなSQLでは、COL2が広めの適当なデータ型にされてしまうけど、

SELECT COL1, CLng(COL2) AS COL2_SUM
INTO TARGET_T
FROM SOURCE_T
GROUP BY COL1

てな形で、集計結果のデータ型変換もできる。

参考: データ型変換関数…:一日一見

Windows

XP2でSMTPメール送信が遅くなる

Windows XPでSP2を適用すると、Windowsファイアウォールが有効になる。この状態でメール送信すると、SMTPサーバへの接続がやけに遅くなっている。

理由は、PCからのメール送信時、SMTPサーバ->PC に応答のメッセージが帰ってくるが、これをWindowsファイアウォールのせいで受け付けられず、PC側でタイムアウトになるまで待っているためと考えられる。

以下、ファイアウォールに(最小限と思われる)穴を開けて、以前の通りにする(SMTPサーバからの応答メッセージを受け付ける)方法。

なぜこのような設定をするのか、という理由は、Becky! Ver.2 BBSを参照。(同じ設定内容にしているつもり・・・)

  1. コントロールパネル -> ネットワーク接続 -> ローカル エリア接続(接続名)
  2. 「プロパティ」ボタン
  3. 「詳細設定」タブの「設定」ボタン
  4. 「例外」タブの「ポートの追加」ボタン で、以下のダイアログが出てくる。画像の説明
  5. 「名前」に適当なもの、「ポート番号」に113を指定する。(このポートが空くことになる)
  6. 「スコープの変更」ボタン で、以下のダイアログが出てくる。画像の説明
  7. 「カスタムの一覧」を選択後、SMTPサーバのアドレスを入力する。(SMTPサーバに限って、穴を使えるようにする)

例は「IPアドレス/サブネットマスク」で入力するようになってるけど、写真みたく「マシン名 + ネットワーク名」で入力してもいいみたいで、「OK」ボタンを押して再確認すると、勝手にIPアドレスに変換してくれていた。

ファイアウォールに穴を開ける設定なので、設定は自己責任でどうぞ。

一般telnetクライアントからの接続を受ける

Windows 2000サーバのtelnetサービスで、デフォルトの状態ではTeraTermなどの一般*1telnetクライアントで接続しようとすると、エラーになる。 Unix Services for Windowsの体験版をインストールしてもいいが、@IT記事のようにサービス側の認証方式を変えてやれば接続できるようになる。