ゆるいSEのIT徒然草

SE向けナレッジ(ほぼ自分用メモ)。技術以外にも、システム関連のもろもろ雑多なノウハウを公開します。内容保証しません!!!

bakリストア手順

リストア手順

1)オブジェクトエクスプローラで、  データベース>DB名 で右クリック⇒復元⇒ファイルおよびファイルグループ

2)復元元デバイス で、バックアップファイルのパスを指定

3)復元するバックアップセットの選択 で、復元したいバージョンにチェックを入れる

4)OK押下


bakファイルのリストア時エラー対応

■課題 bakファイルを別データベースへリストアする場合の手順について。 以下エラーが発生することがある。 「バックアップ セットは、既存のデータベース '%ls' 以外のデータベースのバックアップを保持して います。」

■対策 上記エラーの場合は、以下を確認する。

(1)[オプション]タブの「既存のデータベースを上書きする」チェックが入っていること。

(2)SSMSのオブジェクトエクスプローラの「データベース」を右クリックし「データベースの復元」を選択し作業を行っていること。 ※復元先のデータベースで右クリック>タスク>復元>ファイルおよびファイルグループ の手順では、別DBからのリストアはうまくいかない(ぽい)。

各テーブル・インデックスの圧縮SQL生成用SQL

select * from (

SELECT 'ALTER TABLE ' + name + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);' as sqltext FROM sys.objects WHERE type = 'U' and (name NOT LIKE 'sys%' and name NOT LIKE 'dt%') and create_DATE >='2014/09/01'

UNION

SELECT 'ALTER INDEX ' + name + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);' as sqltext FROM sysindexkeys ik,sysobjects o,sysindexes i WHERE ik.id = o.id AND ik.id = i.id AND ik.indid = i.indid AND o.xtype = 'U' and i.name IS NOT NULL and o.name is not null ) target

※PAGE⇒NONEに変えれば、非圧縮化もできる。 ※ここでの出力結果から、圧縮不要なものは除くこと。 ※洗い替えを頻繁に行うテーブルは圧縮しないほうがよい。

gzip gunzip

gzip [用途] ZIP形式で圧縮する [使用例] 1)TARをgz形式に圧縮 $gzip test1.tar →test1.tarが圧縮され、test1.tar.gzになる。 元のtest1.tarは無くなるので注意。 2)普通のファイルをgz形式に圧縮 $gzip test1.log 3)gzファイルを解凍(dオプション) $gzip -d test1.tar.gz [備考] ・オプション d:解凍 ・gzip は compress より圧縮率が高い。

□gunzip [用途] ZIP形式を解凍(gzip -d [file]と同じ)

[使用例] 1)gzファイルを解凍 $gunzip test1.tar.gz

2)gzの解凍と同時に、tar内の特定ファイルの展開を同時に実行する $gunzip -c 20101215logs.tar.gz | tar xvf - logs/server.log

SQLServerの小技SQL集(管理系)

DB内のオブジェクトを全文検索する
(特定項目がどのテーブル・ストアド等で使われているか?を洗い出すために使用)

SELECT * FROM sys.sql_modules WHERE definition LIKE '%Company%'  --"Company"を含むソースを検索
SELECT * FROM sys.sql_modules WHERE UPPER(definition) LIKE '%ABC%'  --"ABC"を含むソースを検索

対象テーブルの項目一覧を取得する

SELECT name FROM syscolumns
WHERE id = object_id('[DB1].[dbo].[TABLEA]')
ORDER BY colid ASC

テーブル更新日時一覧sql

select 
  name,create_date,modifydate
from
  sys.objects
where
  type='U'
order by name

各テーブルのレコード件数取得SQL

select 
  a.name as tablenm,
  b.rows
from sys.objects as a 
inner join sys.sysindexes as b 
on a.object_id = b.id and b.indid < 2
where a.type = 'U'
order by b.rows desc