目次
SQLServer
ライフサイクル一覧
製品名 | サポート開始日 | 延長サポート終了日 |
---|---|---|
SQL Server 2019 | 2019/11/04 | 2030/01/08 |
SQL Server 2017 | 2017/09/29 | 2027/10/12 |
SQL Server 2016 | 2016/06/01 | 2026/07/14 |
SQL Server 2014 | 2014/07/12 | 2024/07/09 |
日時変換
日時変換はCONVERT関数を使うのが一般的ですが、書式変換があまり直感的ではない。
SQLServer2008 R2以降では、FORMAT関数が使えます。
SELECT CONVERT ( VARCHAR, GETDATE(), 111 ) AS 日付1 , CONVERT( VARCHAR , GETDATE (), 108 ) AS 時刻1 日付1 時刻1 2016/10/26 17:33:32 SELECT FORMAT( GETDATE (), 'yyyy/MM/dd' ) AS 日付2 , FORMAT( GETDATE (), 'HH:mm:ss' ) AS 時刻2 日付2 時刻2 2016/10/26 17:33:32
日付のみで抽出
SQLServer 2008からは日付のみのDate型が使えるようになったので、DateTime型をDate型にキャストすることで日付のみの抽出を行う。
SELECT * FROM TICKET WHERE CAST(OccurredDate AS DATE) >= CAST(GetDate() AS DATE)
文字列日時からDateTime型に変換
SQLServerのSTUFF関数で半角スペースと':'を挿入し、yyyyMMdd HH:mm:ss形式にすることで、CONVERT関数そのままDateTime型にキャストすることが可能。
SELECT CONVERT(DateTime,stuff(stuff(stuff('20210122235959', 9, 0, ' '), 12, 0, ':'),15, 0, ':'))
結果
2021/01/22 23:59:59
コマンドライン実行
SQL ServerをCUIで管理するツールとしては、現在ではsqlcmdが推奨されているが、それ以外にもisql(廃止)やosql(非推奨)というコマンドもある(あった)
表示値 (N/A)となる場合
“EXIT()“で囲むことで、ERRORLEVELにリターン値として格納することができます。
BOM監視の設定にて、プログラム名「sqlcmd」で引数「-U Fuga -P Hoge -h-1 -Q “EXIT(set nocount on select '0')“」とする。※osqlのままでは駄目だった
参照:【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法
値が取得できない場合
スクリプトの先頭に「SET NOCOUNT ON」を入れることで「何件処理されました。」の処理件数が非表示となり、ERRORLEVELにリターン値をセットされます。
トレース実行
SQL Server Profilerのトレース機能を使用するためには、実行するにはユーザーにAlter Traceアクセス権限を許可する必要があります。 参照:SQL Server Profilerの実行権限設定 / 許可 / 拒否 / プロファイラー
USE [master] GRANT ALTER TRACE TO [T_RESULT]
WHERE条件時に末尾空白を無視
SQL Server における可変長文字列の末尾の空白について
SQLServerのvarchar型は末尾空白をセットすることが出来るが、「WHERE条件時に末尾空白無視する仕様」になっている。
これは、ANSI/ISO SQL-92 specification にのっとった仕様でバグではありません。
※Oracleはverchar2型で末尾空白は無視しない。※文字列比較セマンティクス
パラメータークエリ
プレースホルダーは「@」となる。@NAMEとして使用する。ちなみに、Oracleのプレースホルダーは「:」である。
SSMSの結果グリッドの文字が小さい
SSMS のフォント設定は、「ツール」→「オプション」→「環境」→「フォントおよび色」から変更することができます。
変更する対象としては、「クエリ」「結果」「メッセージ」の 3 箇所あります。
結果グリッドのフォントを6ptから9ptに変更し、SSMSを再起動する。
証明書エラー
SQLサーバーへの接続で以下のようなエラーが発生する場合の対処法です。
信頼されていない機関によって証明書チェーンが発行されました。
接続文字列に「TrustServerCertificate=True」を追加します。
var connectionString = "Server=.;database=my_db;TrustServerCertificate=True";
SQLサーバーへのアクセスで証明書のエラーが出る場合の対処法(信頼されていない機関によって証明書チェーンが発行されましたというエラー)