MW211 EXIT

devlog
MSSQL/数値の文字列変換
2015年03月26日
数値を文字列に変換するには、以下の方法が考えられる。
┌──────────────────────────────────────┐
│(A-1) FORMAT(数値, '0')                                                     │
│(A-2) LTRIM(STR(数値)))                                                     │
├──────────────────────────────────────┤
│(B-1) CONVERT(varchar, 数値)                                                │
│(B-2) CAST(数値 AS varchar)                                                 │
└──────────────────────────────────────┘

但し、B系だと、推定実行プランにて以下の警告が発生するのだが。
┌──────────────────────────────────────┐
│式 (CONVERT(varchar(30),数値,0)) の型変換は、                               │
│クエリプランの選択の"CardinalityEstimate"に影響する可能性があります。       │
└──────────────────────────────────────┘

どれが最適なのだろうか?
分類:MSSQL
SQL/日時範囲と日付範囲の混同
2015年03月25日
「WHERE 日付 <= '2015-12-25'」の場合は、「2015-12-25」のデータは抽出される。

でも…
「WHERE 日時 <= '2015-12-25'」の場合は、「2015-12-25」のデータは除外される。

この点に注意。

なぜなら、上記は「WHERE 日時 <= '2015-12-25 00:00:00'」と同じ。
「00:00:01」以降のデータは除外されてしまうのだ

なので、「WHERE 日時 <= '2015-12-25 23:59:59'」とするか
「WHERE 日付変換(日時) <= '2015-12-25'」とする必要あり。

「日付変換(日時)」については、
MSSQLの場合は「CONVERT(date, 日時)」みたいな感じで。
分類:SQL
MSSQL/DBが知らぬ間に復旧中になっている
2015年03月24日
MSSQLのエラーログ(ERRLOG)に以下のようなメッセージが頻出している場合がある
「Starting up database '■■■■DB'.」
この時、DBは復旧中状態になる。

これは、「自動終了(AUTO_CLOSE)」設定が「ON(TRUE)」になっていると発生する。

「自動終了(AUTO_CLOSE)」とは、DB毎に設定するもので、
そのDBが誰からもアクセスされなくなった時点で自動的に終了(CLOSE)する機能。
これにより、メモリをこまめに解放する。

そして、再度、誰かがアクセスすると、再び起動(Starting up)する訳だ。

設定の変更は、以下の様に「ALTER DATABASE」文で行う。(以下はOFFにする例)
「ALTER DATABASE [■■■■DB] SET AUTO_CLOSE OFF;」
分類:MSSQL
MSSQL/エラーメッセージ(マルチパート識別子)
2015年03月23日
「マルチパート識別子をバインドできない」とは…

表を複数結合した場合に、列名が重複していて、上位表が明確でない場合

「SELECT 表1.列 FROM 表1,表2;」と書かなければならないところを
「SELECT     列 FROM 表1,表2;」と書いちゃった場合とか。

→「表2.列」があると、後者では区別がつかない
  もちろん「表2.列」がなければ問題にはならない。
分類:MSSQL
MSSQL/エラー
2015年03月22日
┌──────────────────────────────────────┐
│BEGIN TRY                                                                   │
│    SELECT 1/0;  --エラー発生                                               │
│END TRY                                                                     │
│BEGIN CATCH                                                                 │
│    SELECT                                                                  │
│        ERROR_NUMBER()    AS [エラー番号],                                  │
│        ERROR_SEVERITY()  AS [重大度],                                      │
│        ERROR_STATE()     AS [エラー状態],                                  │
│        ERROR_PROCEDURE() AS [ストアドプロシージャ名],                      │
│        ERROR_LINE()      AS [行],                                          │
│        ERROR_MESSAGE()   AS [本文];                                        │
│END CATCH;                                                                  │
│GO                                                                          │
└──────────────────────────────────────┘
上記のような感じで、エラー番号を取得できるわけだが、
その対応表を取得するには、以下のような感じでSELECT文を実行すればよい。
┌──────────────────────────────────────┐
│SELECT message_id AS [エラー番号],                                          │
│       text       AS [本文],                                                │
│       severity   AS [重大度],                                              │
│       CASE                                                                 │
│          WHEN is_event_logged = 1 THEN 'イベントログ記録'                  │
│          ELSE                          ''                                  │
│       END AS [備考]                                                        │
│    FROM sys.messages                                                       │
│    WHERE language_id = 1041  -- 日本語                                     │
│    ORDER BY message_id ASC;                                                │
└──────────────────────────────────────┘
分類:MSSQL
Atomのインストール方法
2015年03月19日
(1) 「Chocolatey」がインストール済みであること
(2) 管理者権限でコマンドプロンプトを起動し以下を実行する
  ┌─────────────────────────────────────┐
  │cinst Atom                                                                │
  └─────────────────────────────────────┘

ちなみにMarkdown記法のプレビューが見たい場合には
「Ctrl + Shift + M」でプレビューウインドウを起動する
分類:IT全般
Chocolateyのインストール方法
2015年03月18日
(1) 任意のインストールフォルダを作成する「C:\tools\Chocolatey」
(2) システム環境変数に以下を設定する(変数値はインストールフォルダ)
    ┌───┬──────────┐
    │変数名│ChocolateyInstall   │
    ├───┼──────────┤
    │変数値│C:\tools\Chocolatey │
    └───┴──────────┘
    以下で、設定状況を確認できる
  ┌─────────────────────────────────────┐
  │echo %ChocolateyInstall%                                                  │
  └─────────────────────────────────────┘
(3) 管理者権限でコマンドプロンプトを起動し以下を実行する(一行で)
  ┌─────────────────────────────────────┐
  │@powershell -NoProfile -ExecutionPolicy unrestricted -Command             │
  │ "iex ((new-object net.webclient).                                        │
  │ DownloadString('https://chocolatey.org/install.ps1'))"                   │
  │ && SET PATH=%PATH%;%systemdrive%\ProgramData\chocolatey\bin              │
  └─────────────────────────────────────┘

・Chocolatey自体のアンインストールは、インストールフォルダを丸ごと削除するだけ
  インストール時に、レジストリ等はいじられていない
分類:IT全般
秀丸マクロ/二重引用符の中のカンマ置換
2015年03月17日
CSVデータで値にカンマを含むがために二重引用符で囲われている場合、
そのカンマを違う値にするマクロ。

┌──────────────────────────────────────┐
│while(1) {                                                                  │
│    replaceallfast "(^([^,\"]*?,|\"[^,\"]*\",)*\"[^,\"]*),(.*$)",           │
│                   "\\1,\\2",                                              │
│                   regular;                                                 │
│    if (!result) break;                                                     │
│}                                                                           │
│endmacro;                                                                   │
└──────────────────────────────────────┘
上記では「,」(全角カンマ)に置換している。
分類:秀丸エディタ
MSSQL/長文のデータ型
2015年03月16日
Q.データ型で「nvarchar(4000)」と「nvarchar(max)」の違いは?

A.いずれも長い文字列を格納する項目の場合に使用する型です
    「nvarchar()」に指定できる最大文字数は4000文字なので
    その指定での最大が「nvarchar(4000)」となります
    「nvarchar(max)」はさらに大きく2GB分になります
    但し、これについてはインデックス項目に含めない方がよいようです
分類:MSSQL
MSSQL/UNIONのCAST誤認
2015年03月15日
ものすごく話を単純化して説明すると、以下の様なSQL文を実行した場合…
┌──────────────────────────────────────┐
│SELECT NULL                                                                 │
│UNION ALL                                                                   │
│SELECT 'a'                                                                  │
└──────────────────────────────────────┘
以下のようなエラーが発生することがある。
┌──────────────────────────────────────┐
│nvarchar の値 'a' をデータ型 int に変換できませんでした。                   │
└──────────────────────────────────────┘
NULLをint型と誤認して、文字型(nvarchar型)と不整合となったようだ。

但し、これは上記をそのまま実行しても発生しない。
VIEWを介した時に発生するようだ。

とにかくこれを回避するには、以下のようにNULLをCASTすればいいようだ。
┌──────────────────────────────────────┐
│SELECT CAST(NULL AS nvarchar)                                               │
│UNION ALL                                                                   │
│SELECT 'a'                                                                  │
└──────────────────────────────────────┘
分類:MSSQL
前へ 1 … 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 … 156 次へ