ユーザ用ツール

サイト用ツール


it技術:データベース:sqlserver

SQLServer

ライフサイクル一覧

製品名サポート開始日延長サポート終了日
SQL Server 20192019/11/042030/01/08
SQL Server 20172017/09/292027/10/12
SQL Server 20162016/06/012026/07/14
SQL Server 20142014/07/122024/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 Server デモ環境用のフォント設定

証明書エラー

SQLサーバーへの接続で以下のようなエラーが発生する場合の対処法です。

信頼されていない機関によって証明書チェーンが発行されました。

接続文字列に「TrustServerCertificate=True」を追加します。

var connectionString = "Server=.;database=my_db;TrustServerCertificate=True";

SQLサーバーへのアクセスで証明書のエラーが出る場合の対処法(信頼されていない機関によって証明書チェーンが発行されましたというエラー)

it技術/データベース/sqlserver.txt · 最終更新: 2023/01/27 10:46 by yajuadmin