SQL Server のシステム関数や統計関数を使用するサンプルを掲載します。

1. システム統計関数を使用する

SQL Server のシステム統計関数を使用するサンプルは次のようになります。

-- SQL Server の起動後に、成功または失敗した接続試行数を返す
SELECT @@CONNECTIONS

-- SQL Server が起動してからの動作時間を返します
SELECT @@CPU_BUSY, @@CPU_BUSY * CAST(@@TIMETICKS AS FLOAT) AS 'CPU microseconds' 

-- SQL Server が最後に起動してからアイドル状態になっていた時間を返す
SELECT @@IDLE, @@IDLE * CAST(@@TIMETICKS AS FLOAT) AS 'Idle microseconds'

-- Microsoft SQL Server が起動して以降、入出力操作に費やした時間を返す
SELECT @@IO_BUSY, @@IO_BUSY*@@TIMETICKS AS 'IO microseconds'

-- SQL Server の起動以降に SQL Server の接続で発生した、ネットワーク パケット
-- エラーの数
SELECT @@PACKET_ERRORS
-- SQL Server が起動してからネットワークから読み取った入力パケット数を返す
SELECT @@PACK_RECEIVED
-- SQL Server が起動してからネットワークに書き込まれた出力パケット数を返す
SELECT @@PACK_SENT

-- ログ ファイルを含む、データベース ファイルの I/O 統計を返す
SELECT *
  FROM fn_virtualfilestats(DB_ID('master'), 1)

-- SQL Server が起動してから発生したディスクの書き込みエラーの数を返す
SELECT @@TOTAL_ERRORS

-- SQL Server の前回の起動時以降に行われたディスクの読み取りの回数を返す
SELECT @@TOTAL_READ
-- SQL Server の前回の起動時以降に行われたディスクへの書き込み数を返す
SELECT @@TOTAL_WRITE

-- 1 チックあたりのマイクロ秒数を返します
SELECT @@TIMETICKS

2. データベース情報、セッション情報、サーバ情報を表示する

サンプルを掲載します。

-- データベース設定取得する
-- SERVERPROPERTY, DATABASEPROPERTY, DATABASEPROPERTYEX
-- 関数を使用します
-- 使用できるプロパティはBOOKS ONLINE 参照
SELECT DATABASEPROPERTYEX('master', 'Recovery')
SELECT DATABASEPROPERTYEX('master', 'Status')

SELECT SERVERPROPERTY('ServerName')
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')

-- 現在のデータベースID, 名前を取得する
SELECT DB_ID() ID, DB_NAME() NAME, DB_ID('master'), DB_NAME('1')

-- オブジェクトID,名前を取得する
SELECT OBJECT_ID('dbo.Article'), OBJECT_NAME('2034106287')

-- 接続アプリケーション、ホスト情報を表示
SELECT APP_NAME(), HOST_NAME(), HOST_ID()

-- 接続のログインユーザ、データベースユーザを表示
SELECT SYSTEM_USER LoginUser, USER DatabaseUser

-- 現在のセッションの言語
SELECT @@LANGID 言語ID, @@LANGUAGE 言語

-- 現在のセッションのセッションID
SELECT @@SPID SessionID

-- セッション情報を表示する
SELECT SESSIONPROPERTY('ANSI_NULLS')
SELECT SESSIONPROPERTY('QUOTED_IDENTIFIER')

-- セッションのコンテキスト情報を取得する
SELECT CONTEXT_INFO()

-- トランザクションのネストレベル
SELECT @@NESTLEVEL

-- アクティブなトランザクション数を表示する
-- ストアド内でトランザクション数を調べて、
-- トランザクションを開始、コミットするなど
-- のコードな処理を実現できる。
SELECT @@TRANCOUNT

-- 直前の読み取られた、更新されたレコード数
SELECT @@ROWCOUNT 

-- 各週の最初の曜日を取得する
-- 既定 7:日曜日
SELECT @@DATEFIRST 
-- 設定を変えるとDATEPART(dw,GETDATE())の値に
-- 影響があります

-- ロックのタイムアウト時間
-- 無制限の場合は-1にする
SELECT @@LOCK_TIMEOUT

-- サーバ名, サービス名, バージョン
SELECT @@SERVERNAME SERVERNAME, @@SERVICENAME SERVICENAME, @@VERSION VERSION