みみたんのメモWiki
Microsoft SQL Server
最終更新:
mimitan
-
view
Microsoft SQL Server関連メモ
SQL Serverに関してはサーバのASP.NETから使うことがもっぱらなので、「LINQ to SQL」です。
ですが、コマンド関連のメモも載せます。
もしかしたらぁ~、他のデータベースサーバも使えるかも。
ですが、コマンド関連のメモも載せます。
もしかしたらぁ~、他のデータベースサーバも使えるかも。
コマンドメモ
- AutoIncrimentの値をリセット
USE データベース名; GO DBCC CHECKIDENT ("テーブル名", RESEED, 0); GO
- 自動採番された値を取得
SELECT IDENT_CURRENT('TABLE_B') AS LASTID
- 自動採番された値をリセット
SELECT IDENT_CURRENT('TABLE_B') AS LASTID
- SQL Serverのコマンド接続
Exressだと以下が多い
sqlcmd -S (local)\SQLEXPRESS
- データベースのサイズの取得
exec sp_spaceused GO
- テーブルサイズ
exec sp_MStablespace [テーブル名] GO
- データベースのデータ領域とログ領域情報
EXEC sp_spaceused N'dbo.TableName'; GO
- データベースのデータ領域とログ領域情報
SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files; GO
- 実行時間
SQL Server 2005で使用可
DECLARE @StartTime datetime SET @StartTime = GETDATE() /* ここに処理時間を計測したいSQL文を書く */ SELECT CONVERT(varchar,GETDATE()-@StartTime,114) AS 実行時間
SQL Server 2008で使用可 値はナノ秒
DECLARE @STARTTIME datetime2 SET @STARTTIME = SYSDATETIME(); /* ここに処理時間を計測したいSQL文を書く */ SELECT DATEDIFF(nanosecond, @STARTTIME,SYSDATETIME());
こんなのも?
SET STATISTICS PROFILE ON SET STATISTICS TIME ON SET SHOWPLAN_TEXT ON
- SQL Server トランザクション分離レベル(読込時のロック回避)
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
他のトランザクションでデーター更新中でも読み込みできる.
更新の途中で読み込んでしまう可能性があるので,例えば半分だけ更新されていて半分は更新されていないデーターを取得してしまうなど一貫性がないデーターになる場合がある(ダーティ リード).
更新の途中で読み込んでしまう可能性があるので,例えば半分だけ更新されていて半分は更新されていないデーターを取得してしまうなど一貫性がないデーターになる場合がある(ダーティ リード).
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
データー更新か終わるまで待ってから読み込む.
読み込み中に他でデーター更新することは可能.
SQL Serverの規定値.
読み込み中に他でデーター更新することは可能.
SQL Serverの規定値.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
データー更新か終わるまで待ってから読み込む.
読み込み中に他でデーター更新することはできない.
他で行を挿入することは可能.
必要なときだけ使う.
読み込み中に他でデーター更新することはできない.
他で行を挿入することは可能.
必要なときだけ使う.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
データー更新か終わるまで待ってから読み込む.
読み込み中に他でデーター更新することはできない.
他で行を挿入することもできない.
どうしても必要なときだけ使う.
読み込み中に他でデーター更新することはできない.
他で行を挿入することもできない.
どうしても必要なときだけ使う.
SQL Server 2005以降は以下のSNAPSHOTも使える.
これらは更新中も読み込みでき一貫性も保たれるが,
行サイズが大きく、更新の多いデータベースの場合は、
tempdb「Version Store」 の利用頻度増大や肥大化の悪影響がある.
これらは更新中も読み込みでき一貫性も保たれるが,
行サイズが大きく、更新の多いデータベースの場合は、
tempdb「Version Store」 の利用頻度増大や肥大化の悪影響がある.
(1)
READ_COMMITTED_SNAPSHOT ON
SELECTステートメント発行時点での正しいデーターを読み込む.
(ステートメント レベル)
(ステートメント レベル)
(2)
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
トランザクション開始時点に存在したデーターを読み込む.
(トランザクション レベル)
ALLOW_SNAPSHOT_ISOLATION を ON に設定しておく必要がある.
(トランザクション レベル)
ALLOW_SNAPSHOT_ISOLATION を ON に設定しておく必要がある.
- トランザクションログの使用状況
DBCC SQLPERF('LOGSPACE')
- 復旧モデルを [単純] に設定する
ALTER DATABASE [TEST] SET RECOVERY SIMPLE
- NULLデバイスへのバックアップ
BACKUP DATABASE [TEST] TO DISK = N'NUL’ BACKUP LOG [TEST] TO DISK = N'NUL'
トランザクションログを切り捨てたい時に使える?
データベースの照合順序を変更
cd %PROGRAMFILES%Microsoft SQL Server\110\Setup Bootstrap\SQLServer2012 setup.exe /ACTION=Rebuilddatabase /INSTANCENAME=MSSQLSERVER /SQLCOLLATION=Japanese_CI_AS_KS /SQLSYSADMINACCOUNTS=Administrator /Q