MS SQL2000, 2005, 2008にてデータベースに作成されたインデックスの調査する為のクエリー


SELECT "table" = object_name(i.id), i.name,
isclustered = indexproperty(i.id, i.name, 'IsClustered'),
"column" = col_name(i.id, ik.colid), ik.keyno
FROM sysindexes i
JOIN sysindexkeys ik ON i.id = ik.id
AND i.indid = ik.indid
WHERE i.indid BETWEEN 1 AND 254
AND indexproperty(i.id, name, 'IsHypothetical') = 0
AND indexproperty(i.id, name, 'IsStatistics') = 0
AND indexproperty(i.id, name, 'IsAutoStatistics') = 0
AND objectproperty(i.id, 'IsMsShipped') = 0
ORDER BY "table", "isclustered" DESC, i.name, ik.keyno

インデックス調査
db_index_confirm1


SQL2000, SQL2005, SQL2008でテーブルサイズを調査するクエリー
テーブル名、行数、データサイズ(MB)


SELECT object_name(id)as 'Table Name' ,rowcnt as 'Number of Rows',
dpages as 'Number of Pages',(dpages * 8 )/1024 'サイズ(MB)'
FROM sysindexes
WHERE indid IN (1,0)
AND OBJECTPROPERTY(id, 'IsUserTable') = 1
ORDER BY 'サイズ(MB)' DESC


■SQL2000, SQL2005, SQL2008対応

SQL2000のEnterpriseManagerや2005のManagement Consoleで
現在接続中のユーザーを確認するのと同等のクエリーです。


SELECT
spid,status,hostname,program_name,cmd,cpu
,physical_io,blocked,dbid,convert(sysname, rtrim(loginame)) as loginname
,substring( convert(varchar,last_batch,111) ,6 ,5 ) + ' '
+ substring( convert(varchar,last_batch,113) ,13 ,8 ) as 'last_batch_char'
from master.dbo.sysprocesses (nolock)
where hostname <> ''

———————————————————————————
order by cpu desc,physical_io desc
———————————————————————————

SELECT
spid,status,hostname,convert(sysname, rtrim(loginame)) as loginname,
program_name,cmd,cpu,physical_io,blocked,dbid
,substring( convert(varchar,last_batch,111) ,6 ,5 ) + ' '
+ substring( convert(varchar,last_batch,113) ,13 ,8 ) as 'last_batch_char'
from master.dbo.sysprocesses (nolock)
where hostname <> ''
order by cpu desc,physical_io desc


XMLCREATE.gif

C:\>bcp “select * from workplace.dbo.Schedule where number = 1 for xml auto” queryout  “order.x
ml” -c -STZYPR -Usa -Pパスワード

コピーを開始中です…

1 行コピーされました。
ネットワーク パケット サイズ (バイト数): 4096
クロック タイム (ミリ秒): 合計        1

C:\>bcp “select * from workplace.dbo.Schedule for XML AUTO” queryout  “order.xml” -c -STZYPR -U
sa -Pパスワード

コピーを開始中です…

6 行コピーされました。
ネットワーク パケット サイズ (バイト数): 4096
クロック タイム (ミリ秒): 合計       10

C:\>


1 ——————システムDBのアップデートを可能に設定

Exec sp_configure ‘allow updates’,1
Reconfigure with override
Go

2 ——————DBを緊急モードに設定

Begin Tran
Update master..sysdatabases
Set status = Status | 32768
Where name = ‘MyDatabase’

If @@Rowcount = 1
Begin
 Commit tran
 Raiserror(‘emergency mode set’,0,1)
End

Else
Begin
 Rollback
 Raiserror(‘unable to set emergency mode’,16,1)
End

Go

3 ——————システムDBの更新を禁止にする。

Exec sp_configure ‘allow updates’, 0
Reconfigure with override

4 —————— SQLサーバーを再起動してログを指定して直す

DBCC REBUILD_LOG(‘MyDatabase’,’C:\Mydatabase.ldf’)

5 —————— DBのシングルユーザーモードを解除する。

Alter database Mydatabase Set Multi_User
Go

 

※Check Consistency of Database, if error is exsist get data by bcp

 

Enterp.gif

Query.gif