2008年10月20日月曜日

データベース スナップショット概要

データベース スナップショットについてのメモ

データベースの「ある時点」の読取り専用コピー

○メリット1

 ミラーリングした際に、通常は待機側(復元状態)データベースの
 内容を見ることは出来ないが、データベーススナップショットを
 作成すれば、読み取り専用サーバーとして使うことが出来る。

○メリット2
 テスト時に使える。

 テスト開始前の状態のデータベーススナップショットを
 作成した状態でテストを実行、結果を確認後に
 データベーススナップショットの時点の状態に戻す。

NTFSの特徴

MCPの勉強でNTFSがでてきたので、その特徴をメモしておく。

【NTFSの特徴】
・アカウントごとにアクセス権が設定できる
・ファイルシステムレベルで暗号化ができる
・ジャーナリングファイルシステム
 (クラッシュ時の復旧をファイル更新履歴を使って行なう)

2008年9月18日木曜日

最後(直前)に追加されたデータのIDを取得する

追加したデータのIDを別のテーブルにも設定する場合など、
直前に追加されたID(identity)の値を知りたい時には

@@identity

の値を取得する。

関連リンク:
@@IDENTITY (Transact-SQL)

2008年8月20日水曜日

【Transact-SQL】日付の加算・減算(その1)

--日付の加算・減算を行なう。
--1日を1とした場合の各時間の値
-- 3時間=0.125
-- 6時間=0.25
-- 9時間=0.375
--12時間=0.5


DECLARE
@date DATETIME
SET @date = CONVERT(DATETIME, '2008/10/10 12:00:00')

PRINT @date + 0.5
PRINT @date + 0.375
PRINT @date + 0.25
PRINT @date + 0.125
PRINT @date
PRINT @date - 0.125
PRINT @date - 0.25
PRINT @date - 0.375
PRINT @date - 0.5

--【実行結果】
-- 10 11 2008 12:00AM
-- 10 10 2008 9:00PM
-- 10 10 2008 6:00PM
-- 10 10 2008 3:00PM
-- 10 10 2008 12:00PM
-- 10 10 2008 9:00AM
-- 10 10 2008 6:00AM
-- 10 10 2008 3:00AM
-- 10 10 2008 12:00AM

2008年8月19日火曜日

【SQL】文字数をあわせるため不足分を0で埋める

--取得した日付を年月日に分解する。
--分解した際の文字数が足らない場合は左側を0で埋める。
DECLARE
@date datetime
SET @date = getdate()

--分解した値を必要な文字数のVARCHARにキャストするのがポイント
PRINT right('00' + CONVERT(varchar(4),DATEPART(YEAR,@date)),4)
PRINT right('00' + CONVERT(varchar(2),DATEPART(MONTH,@date)),2)
PRINT right('00' + CONVERT(varchar(2),DATEPART(DAY,@date)),2)
PRINT right('00' + CONVERT(varchar(2),DATEPART(HOUR,@date)),2)
PRINT right('00' + CONVERT(varchar(2),DATEPART(MINUTE,@date)),2)
PRINT right('00' + CONVERT(varchar(2),DATEPART(SECOND,@date)),2)

--実行結果 : 値が一桁の場合には左側に0が入っている。
--2008
--08
--19
--20
--18
--01

2008年7月30日水曜日

【SQL】重複のあるデータをHaving句で取得

--HAVING句を使ってidに重複のあるデータのみ取得する。
--概要・・・
--①id ごとに件数を集計する。(GROUP BY)
--②集計した結果が1より大きいものを選択する。(HAVING)
--テーブル
tbl_dataの構成例
--[id] AS int
--[data] AS varchar(50)


SELECT
[id]
FROM [tbl_data]
GROUP BY [id]
HAVING
COUNT(*) > 1

2008年7月23日水曜日

【Transact-SQL】引数で値を返すストアドプロシージャの作成

--引数で値を返すストアドプロシージャの作成
CREATE PROCEDURE
st_get_output_data
(
@inArg1 varchar(16)
,@outArg1 varchar(32) OUTPUT
)
AS
BEGIN
SET @outArg1='@inArg1 is ' + @inArg1
RETURN 0
END

--ストアドプロシージャの実行
DECLARE @RC int
DECLARE @inArg1 varchar(16)
DECLARE @outArg1 varchar(32)

SET @inArg1 = 'test data'

EXECUTE @RC = [test].[dbo].[st_get_output_data]
@inArg1
,@outArg1 OUTPUT

SELECT @outArg1

--実行結果
--@inArg1 is test data