/*
14 - Restore Internal.sql
Remark: Learned from sqlskills.com
*/
IF DATABASEPROPERTY('MCM2008', 'Version') > 0
DROP DATABASE MCM2008;
-- Create the database
CREATE DATABASE MCM2008;
GO
-- Create a dummy device
EXEC SP_ADDUMPDEVICE 'disk',
'MyBackupDevice',
'C:\SQLskills\MyBigbackup.bak';
GO
-- Create a table
CREATE TABLE MCM2008..TestTable (
c1 INT IDENTITY,
c2 VARCHAR (100));
GO
INSERT INTO MCM2008..TestTable
VALUES ('INITIAL DATA: transaction 1');
GO
-- And take a full backup
BACKUP DATABASE MCM2008 TO
MyBackupDevice
WITH FORMAT,
DESCRIPTION='Initial full datatabase Backup';
GO
-- Now add some more data and a backup
INSERT INTO MCM2008..TestTable
VALUES ('Transaction 2');
INSERT INTO MCM2008..TestTable
VALUES ('Transaction 3');
GO
BACKUP LOG MCM2008 TO MyBackupDevice
WITH DESCRIPTION='First Log Backup';
GO
-- Add more data
INSERT INTO MCM2008..TestTable
VALUES ('Transaction 4');
INSERT INTO MCM2008..TestTable
VALUES ('Transaction 5');
GO
-- Now check the time and save it
SELECT GETDATE()
GO
--2011-01-31 20:28:44.700
-- And add some more data
INSERT INTO MCM2008..TestTable
VALUES ('Transaction 6');
INSERT INTO MCM2008..TestTable
VALUES ('Transaction 7');
GO
-- And take another backup
BACKUP LOG MCM2008 TO MyBackupDevice
WITH DESCRIPTION='Second log backup';
GO
-- Simulate disater
DROP DATABASE MCM2008;
GO
-- So what do we have
RESTORE HEADERONLY FROM MyBackupDevice;
GO
/*
BackupName BackupDescription BackupType ExpirationDate Compressed Position DeviceType UserName ServerName DatabaseName DatabaseVersion DatabaseCreationDate BackupSize FirstLSN LastLSN CheckpointLSN DatabaseBackupLSN BackupStartDate BackupFinishDate SortOrder CodePage UnicodeLocaleId UnicodeComparisonStyle CompatibilityLevel SoftwareVendorId SoftwareVersionMajor SoftwareVersionMinor SoftwareVersionBuild MachineName Flags BindingID RecoveryForkID Collation FamilyGUID HasBulkLoggedData IsSnapshot IsReadOnly IsSingleUser HasBackupChecksums IsDamaged BeginsLogChain HasIncompleteMetaData IsForceOffline IsCopyOnly FirstRecoveryForkID ForkPointLSN RecoveryModel DifferentialBaseLSN DifferentialBaseGUID BackupTypeDescription BackupSetGUID CompressedBackupSize
----------------- ----------------------------------------- ---------- ----------------- ---------- -------- ---------- ------------------------- ------------------ -------------------- --------------- ----------------------- -------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ----------------------- ----------------------- --------- -------- --------------- ---------------------- ------------------ ---------------- -------------------- -------------------- -------------------- -------------------- ----------- ------------------------------------ ------------------------------------ --------------------------------------- ------------------------------------ ----------------- ---------- ---------- ------------ ------------------ --------- -------------- --------------------- -------------- ---------- ------------------------------------ ------------------ ----------------------- --------------------------------------- ------------------------------------ ----------------------------- ------------------------------------ --------------------
NULL Initial full datatabase Backup 1 NULL 0 1 102 WINPOC\Administrator WINPOC\SQL08 MCM2008 655 2011-01-31 20:13:56.000 1387520 21000000010100151 21000000016200001 21000000010100151 21000000005400064 2011-01-31 20:22:54.000 2011-01-31 20:22:54.000 52 0 1033 196609 100 4608 10 0 4000 WINPOC 512 1E9EEAE3-2408-4F86-802C-8D91382098E9 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 SQL_Latin1_General_CP1_CI_AS 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 0 0 0 0 0 0 0 0 0 0 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 NULL FULL NULL NULL Database D678602C-5203-46A4-9264-A26A4DA8BA9F 1387520
NULL First Log Backup 2 NULL 0 2 102 WINPOC\Administrator WINPOC\SQL08 MCM2008 655 2011-01-31 20:13:56.000 73728 21000000009500001 21000000019900001 21000000010100151 21000000010100151 2011-01-31 20:26:51.000 2011-01-31 20:26:51.000 52 0 1033 196609 100 4608 10 0 4000 WINPOC 512 1E9EEAE3-2408-4F86-802C-8D91382098E9 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 SQL_Latin1_General_CP1_CI_AS 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 0 0 0 0 0 0 0 0 0 0 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 NULL FULL NULL NULL Transaction Log 113BAE7D-E6F5-4A9E-BD3A-39B981456835 73728
NULL Second log backup 2 NULL 0 3 102 WINPOC\Administrator WINPOC\SQL08 MCM2008 655 2011-01-31 20:13:56.000 73728 21000000019900001 21000000020300001 21000000010100151 21000000010100151 2011-01-31 20:30:41.000 2011-01-31 20:30:41.000 52 0 1033 196609 100 4608 10 0 4000 WINPOC 512 1E9EEAE3-2408-4F86-802C-8D91382098E9 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 SQL_Latin1_General_CP1_CI_AS 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 0 0 0 0 0 0 0 0 0 0 5A3DD442-6D4F-48B7-AB53-99F6A44B0B58 NULL FULL NULL NULL Transaction Log F8137C8F-6A3E-4B78-A0FE-5DA0B74893D4 73728
(3 row(s) affected)
*/
-- Restore the full backup
RESTORE DATABASE MCM2008
FROM MyBackupDevice
WITH FILE=1, STATS, REPLACE,NORECOVERY;
GO
-- And the log backups
RESTORE LOG MCM2008
FROM MyBackupDevice
WITH FILE=2,NORECOVERY;
RESTORE LOG MCM2008
FROM MyBackupDevice
WITH FILE=3,NORECOVERY;
GO
-- And then finalize recovery
RESTORE DATABASE MCM2008 WITH RECOVERY;
GO
SELECT * FROM MCM2008..TestTable;
GO
/*
c1 c2
----------- ----------------------------------------------------------------------------------------------------
1 INITIAL DATA: transaction 1
2 Transaction 2
3 Transaction 3
4 Transaction 4
5 Transaction 5
6 Transaction 6
7 Transaction 7
(7 row(s) affected)
*/
-- What if we want to examine things
-- between restores?
RESTORE DATABASE MCM2008
FROM MyBackupDevice
WITH FILE=1, REPLACE,
STANDBY='C:\SQLskills\standbyfile.dat';
GO
SELECT * FROM MCM2008..TestTable;
GO
/*
c1 c2
----------- ----------------------------------------------------------------------------------------------------
1 INITIAL DATA: transaction 1
(1 row(s) affected)
*/
-- Can we update anything?
INSERT INTO MCM2008..TestTable
VALUES('Transaction 6');
GO
/*
Msg 3906, Level 16, State 1, Line 1
Failed to update database "MCM2008" because the database is read-only.
*/
-- Let's do the next log file
RESTORE LOG MCM2008
FROM MyBackupDevice
WITH FILE=2,
STANDBY='C:\SQLskills\standbyfile.dat';
GO
SELECT * FROM MCM2008..TestTable;
GO
/*
c1 c2
----------- ----------------------------------------------------------------------------------------------------
1 INITIAL DATA: transaction 1
2 Transaction 2
3 Transaction 3
(3 row(s) affected)
*/
-- Now restore the rest, and bring
-- the database online
/*
RESTORE LOG MCM2008
FROM MyBackupDevice
WITH FILE=3, STANDBY='C:\SQLskills\standbyfile.dat';
GO
*/
RESTORE LOG MCM2008
FROM MyBackupDevice
WITh FILE=3, NORECOVERY;
GO
RESTORE DATABASE MCM2008 WITH RECOVERY;
GO
-- what if we want to stop at a specific point?
RESTORE DATABASE MCM2008
FROM MyBackupDevice
WITH FILE=1, NORECOVERY,REPLACE,
STOPAT='2011-01-31 20:28:44.700';
GO
/*Msg 3101, Level 16, State 1, Line 2
Exclusive access could not be obtained because the database is in use.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
*/
/*
EXEC sp_who2;
GO
KILL 60;
GO
ALTER DATABASE MCM2008 SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
*/
RESTORE LOG MCM2008
FROM MyBackupDevice
WITH FILE=2,
STOPAT='2011-01-31 20:28:44.700',
STANDBY='C:\SQLskills\standbyfile.dat';
/*
Processed 0 pages for database 'MCM2008', file 'MCM2008' on file 2.
Processed 7 pages for database 'MCM2008', file 'MCM2008_log' on file 2.
This backup set contains records that were logged before the designated point in time. The database is being left in the restoring state so that more roll forward can be performed.
RESTORE LOG successfully processed 7 pages in 0.008 seconds (6.347 MB/sec).
*/
RESTORE LOG MCM2008
FROM MyBackupDevice
WITH FILE=3,
STOPAT='2011-01-31 20:28:44.700',
STANDBY='C:\SQLskills\standbyfile.dat';
GO
SELECT * FROM MCM2008..TestTable;
GO
/*
c1 c2
----------- ----------------------------------------------------------------------------------------------------
1 INITIAL DATA: transaction 1
2 Transaction 2
3 Transaction 3
4 Transaction 4
5 Transaction 5
(5 row(s) affected)
*/
-- Finalize recovery, with it same as below:
-- RESTORE LOG MCM2008
-- FROM MyBackUpDevice
-- WITH FILE=3, RECOVERY,
-- STOPAT='2011-01-31 20:28:44.700';
RESTORE DATABASE MCM2008 WITH RECOVERY;
GO
SELECT * FROM MCM2008..TestTable;
GO
-- Take another backup so we don't need
-- to go through all that again
BACKUP DATABASE MCM2008 TO
MyBackupDevice
WITH DESCRIPTION='Full backup after recovery';
GO
Monday, January 31, 2011
Understand outer join by examples
SQL> create table p (pid number, pname varchar2(30));
Table created.
SQL> alter table p add constraint p_pk primary key (pid);
Table altered.
SQL> create table c (cid number, cname varchar2(30), pid number,
2 constraint c_pk primary key (cid),
3 constraint c_p_fk foreign key(pid) references p(pid));
Table created.
SQL> create index c_n1 on c(pid);
Index created.
SQL> select * from p;
PID PNAME
---------- -----
1 a
2 b
3 c
0 e
SQL> select * from c;
CID CNAME PID
---------- ----- ----------
11 A 1
12 B 2
22 BB 2
14 DD
SQL> select p.*, c.* from p,c where p.pid=c.pid;
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
1 a 11 A 1
2 b 12 B 2
2 b 22 BB 2
SQL> select p.*,c.* from p,c where p.pid=c.pid(+);
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
1 a 11 A 1
2 b 12 B 2
2 b 22 BB 2
3 c
0 e
SQL> select p.*,c.* from p,c where p.pid=c.pid(+) and c.cname='B';
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
2 b 12 B 2
SQL> select p.*,c.* from p,c where p.pid=c.pid(+) and c.cname(+)='B';
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
1 a
2 b 12 B 2
3 c
0 e
SQL> select p.*,c.* from p,c where p.pid=c.pid and c.cname(+)='B';
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
2 b 12 B 2
SQL> select p.*,c.* from p,c where p.pid>=c.pid(+);
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
3 c 12 B 2
3 c 22 BB 2
3 c 11 A 1
2 b 12 B 2
2 b 22 BB 2
2 b 11 A 1
1 a 11 A 1
0 e
8 rows selected.
SQL> select p.*,c.* from p,c where p.pid>=c.pid;
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
1 a 11 A 1
2 b 11 A 1
3 c 11 A 1
2 b 12 B 2
3 c 12 B 2
2 b 22 BB 2
3 c 22 BB 2
7 rows selected.
SQL> select p.*,c.* from p,c where p.pid>c.pid;
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
2 b 11 A 1
3 c 11 A 1
3 c 12 B 2
3 c 22 BB 2
SQL> select p.*,c.* from p,c where p.pid>c.pid(+);
PID PNAME CID CNAME PID
---------- ----- ---------- ----- ----------
3 c 12 B 2
3 c 22 BB 2
3 c 11 A 1
2 b 11 A 1
1 a
0 e
6 rows selected.
Sunday, January 30, 2011
SQL 2008 MCM Studies - Backup Internals
/*
13 - Backup Internal.sql
Remark: Learned from sqlskills.com
*/
USE master;
GO
IF DATABASEPROPERTY('MCM2008', 'Version') > 0
DROP DATABASE MCM2008;
GO
CREATE DATABASE MCM2008;
GO
USE MCM2008;
GO
-- Create a table and insert 8MB
CREATE TABLE BigTable (
c1 INT IDENTITY,
c2 CHAR(8000) DEFAULT 'a');
GO
CREATE CLUSTERED INDEX BigTable_CL
ON BigTable (c1);
GO
SET NOCOUNT ON;
GO
INSERT INTO BigTable DEFAULT VALUES;
GO 1000
-- Put the database into FULL recovery
-- model and clear out the log
ALTER DATABASE MCM2008 SET RECOVERY FULL;
GO
BACKUP DATABASE MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Full_0.bak'
WITH INIT, STATS;
GO
BACKUP LOG MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Log_0_Initial.bak'
WITH INIT, STATS;
GO
-- Now Rebuild the clustered index to
-- generate a bunch of log
ALTER INDEX BigTable_CL ON BigTable REBUILD;
GO
-- Backup the log to get a baseline size
BACKUP LOG MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Log_1_Baseline.bak'
WITH INIT, STATS;
GO
-- Test 1
-- Now rebuilds the clustered index again
-- to generate more log
ALTER INDEX BigTable_CL ON BigTable REBUILD;
GO
-- Now try a full backup to see if it clears
-- the log
BACKUP DATABASE MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Full_1.bak'
WITH INIT, STATS;
GO
-- If it did, this next log backup should be
-- very small
BACKUP LOG MCM2008 TO
DISK ='C:\SQLskills\MCM2008_Log_2_FullTest.bak'
WITH INIT, STATS;
GO
-- Test 2
-- Now rebuild the clustered index again
-- to generate more log
ALTER INDEX BigTable_CL ON BigTable REBUILD;
GO
-- Now try a checkpoint and see if it clears
-- the log
CHECKPOINT;
GO
-- If it did, this next log backup should be
-- very small
BACKUP LOG MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Log_3_CheckTest.bak'
WITH INIT, STATS;
GO
-- Now let's try a rebild in BULK_LOGGED
-- recovery model. Does that change the log
-- backup size
ALTER DATABASE MCM2008
SET RECOVERY BULK_LOGGED;
GO
ALTER INDEX BigTable_CL ON BigTable REBUILD;
GO
ALTER DATABASE MCM2008
SET RECOVERY FULL;
GO
BACKUP LOG MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Log_4_BulkTest.bak'
WITH INIT, STATS;
GO
-- Test 5
-- Now the case where there's a long-running
-- transaction and the log can't be cleared
-- by the backup. when does it get cleared?
-- In another window, do a long-running
-- transaction
/*
USE master
GO
SET NOCOUNT ON
GO
-- Start the long-running transaction
BEGIN TRAN;
GO
INSERT INTO MCM2008..BigTable DEFAULT VALUES;
GO 1000
*/
-- How much log is being used?
DBCC SQLPERF (LOGSPACE);
GO
/*
Database Name Log Size (MB) Log Space Used (%) Status
------------------------------- ------------- ------------------ -----------
master 1.742188 44.61884 0
tempdb 0.4921875 71.62698 0
model 0.4921875 98.4127 0
msdb 5.054688 16.15147 0
ReportServer$SQL08 6.742188 17.04085 0
ReportServer$SQL08TempDB 0.7421875 55.06579 0
AdventureWorks2008 1.992188 23.43137 0
AdventureWorksDW2008 1.992188 20.58824 0
AdventureWorksLT2008 1.992188 23.72549 0
AdventureWorks 1.992188 15.44118 0
AdventureWorksDW 1.992188 30 0
AdventureWorksLT 1.992188 25.09804 0
TestDb 0.7421875 90.13158 0
MCM2008 12.05469 91.61131 0
FileStreamTestDB 0.9921875 65.15748 0
SalesDB 933.9922 0.8197339 0
IndexInternals 99.99219 5.169349 0
Credit 399.9922 0.4311608 0
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/
-- Now let's take a log backup
BACKUP LOG MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Log_5_LongTest.bak'
WITH INIT, STATS;
GO
-- Did the percentage used go down?
DBCC SQLPERF(LOGSPACE)
GO
/*
Database Name Log Size (MB) Log Space Used (%) Status
---------------------------------- ------------- ------------------ -----------
master 1.742188 44.61884 0
tempdb 0.4921875 71.62698 0
model 0.4921875 98.4127 0
msdb 5.054688 16.22875 0
ReportServer$SQL08 6.742188 17.04085 0
ReportServer$SQL08TempDB 0.7421875 55.06579 0
AdventureWorks2008 1.992188 23.43137 0
AdventureWorksDW2008 1.992188 20.58824 0
AdventureWorksLT2008 1.992188 23.72549 0
AdventureWorks 1.992188 15.44118 0
AdventureWorksDW 1.992188 30 0
AdventureWorksLT 1.992188 25.09804 0
TestDb 0.7421875 90.13158 0
MCM2008 12.05469 91.61131 0
FileStreamTestDB 0.9921875 65.15748 0
SalesDB 933.9922 0.8197339 0
IndexInternals 99.99219 5.169349 0
Credit 399.9922 0.4311608 0
*/
-- Commit transaction in another window
/*
COMMIT TRAN
GO
*/
-- Did the percentage used go down?
DBCC SQLPERF(LOGSPACE)
GO
-- This is because of SQL Server release these spaces reserved for rollback
/*
Database Name Log Size (MB) Log Space Used (%) Status
------------------------------------ ------------- ------------------ -----------
master 1.742188 44.61884 0
tempdb 0.4921875 71.62698 0
model 0.4921875 98.4127 0
msdb 5.054688 16.22875 0
ReportServer$SQL08 6.742188 17.04085 0
ReportServer$SQL08TempDB 0.7421875 55.06579 0
AdventureWorks2008 1.992188 23.43137 0
AdventureWorksDW2008 1.992188 20.58824 0
AdventureWorksLT2008 1.992188 23.72549 0
AdventureWorks 1.992188 15.44118 0
AdventureWorksDW 1.992188 30 0
AdventureWorksLT 1.992188 25.09804 0
TestDb 0.7421875 90.13158 0
MCM2008 12.05469 78.01361 0
FileStreamTestDB 0.9921875 65.15748 0
SalesDB 933.9922 0.8197339 0
IndexInternals 99.99219 5.169349 0
Credit 399.9922 0.4311608 0
*/
-- How about a checkpoint?
CHECKPOINT
GO
DBCC SQLPERF(LOGSPACE)
GO
-- How about a log backup
BACKUP LOG MCM2008 TO
DISK = 'C:\SQLskills\MCM2008_Log_LongTest2.bak'
WITH INIT, STATS;
GO
/*
100 percent processed.
Processed 5 pages for database 'MCM2008', file 'MCM2008_log' on file 1.
BACKUP LOG successfully processed 5 pages in 0.038 seconds (0.886 MB/sec).
*/
DBCC SQLPERF(LOGSPACE)
GO
/*
Database Name Log Size (MB) Log Space Used (%) Status
------------------------------ ------------- ------------------ -----------
master 1.742188 44.61884 0
tempdb 0.4921875 71.62698 0
model 0.4921875 98.4127 0
msdb 5.054688 16.30603 0
ReportServer$SQL08 6.742188 17.04085 0
ReportServer$SQL08TempDB 0.7421875 55.06579 0
AdventureWorks2008 1.992188 23.43137 0
AdventureWorksDW2008 1.992188 20.58824 0
AdventureWorksLT2008 1.992188 23.72549 0
AdventureWorks 1.992188 15.44118 0
AdventureWorksDW 1.992188 30 0
AdventureWorksLT 1.992188 25.09804 0
TestDb 0.7421875 90.13158 0
MCM2008 12.05469 12.69443 0
FileStreamTestDB 0.9921875 65.15748 0
SalesDB 933.9922 0.8197339 0
IndexInternals 99.99219 5.169349 0
Credit 399.9922 0.4311608 0
*/
/*
C:\Users\Administrator>dir c:\SQLskills\MCM*
Volume in drive C has no label.
Volume Serial Number is F0ED-4B30
Directory of c:\SQLskills
01/30/2011 09:25 AM 9,719,296 MCM2008_Full_0.bak
01/30/2011 09:31 AM 10,604,032 MCM2008_Full_1.bak
01/30/2011 09:26 AM 83,456 MCM2008_Log_0_Initial.bak
01/30/2011 09:29 AM 9,388,544 MCM2008_Log_1_Baseline.bak
01/30/2011 09:33 AM 9,124,352 MCM2008_Log_2_FullTest.bak
01/30/2011 09:35 AM 9,257,472 MCM2008_Log_3_CheckTest.bak
01/30/2011 09:40 AM 9,753,088 MCM2008_Log_4_BulkTest.bak
01/30/2011 09:51 AM 9,658,880 MCM2008_Log_5_LongTest.bak
01/30/2011 09:59 AM 124,416 MCM2008_Log_LongTest2.bak
9 File(s) 67,713,536 bytes
0 Dir(s) 12,096,598,016 bytes free
*/
Sunday, January 16, 2011
SQL 2008 Core Studies - Optimizer Statistics
/*
07 - Statistics.sql
Remark: Learned from sqlskills.com
*/
-- Restore Credit database, downloaded from past events, sqlskills.com
RESTORE VERIFYONLY FROM DISK=N'C:\SQLskills\CreditBackup100\CreditBackup100.bak';
GO
/*
Attempting to restore this backup may encounter storage space problems. Subsequent messages will provide details.
The path specified by "C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\DATA\CreditData.mdf" is not in a valid directory.
Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\DATA\CreditLog.ldf" failed with the operating system error 3(The system cannot find the path specified.).
The backup set on file 1 is valid.
*/
RESTORE FILELISTONLY FROM DISK=N'C:\SQLskills\CreditBackup100\CreditBackup100.bak';
GO
/*
LogicalName PhysicalName Type FileGroupName Size MaxSize FileId CreateLSN DropLSN UniqueId ReadOnlyLSN ReadWriteLSN BackupSizeInBytes SourceBlockSize FileGroupId LogGroupGUID DifferentialBaseLSN DifferentialBaseGUID IsReadOnly IsPresent TDEThumbprint
-------------- ------------------------------------------------------------------------------------- ---- --------------- ----------- -------------------- ------- ------------- ---------- ------------------------------------ --------------------------------------- --------------------------------------- -------------------- --------------- ----------- ------------------------------------ --------------------------------------- ------------------------------------ ---------- --------- ---------------
CreditData C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\DATA\CreditData.mdf D PRIMARY 1048576000 35184372080640 1 0 0 00000000-0000-0000-0000-000000000000 0 0 163708928 512 1 NULL 32000000119200089 0C50A096-EAE8-4F54-B482-774964509C60 0 1 NULL
CreditLog C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\DATA\CreditLog.ldf L NULL 419430400 35184372080640 2 0 0 00000000-0000-0000-0000-000000000000 0 0 0 512 0 NULL 0 00000000-0000-0000-0000-000000000000 0 1 NULL
(2 row(s) affected)
*/
RESTORE VERIFYONLY FROM DISK=N'C:\SQLskills\CreditBackup100\CreditBackup100.bak'
WITH MOVE N'CreditData' TO N'C:\SQLskills\CreditData.mdf',
MOVE N'CreditLog' TO N'C:\SQLskills\CreditLog.ldf' ;
GO
/*
The backup set on file 1 is valid.
*/
RESTORE DATABASE Credit FROM DISK=N'C:\SQLskills\CreditBackup100\CreditBackup100.bak' WITH --REPLACE,
MOVE N'CreditData' TO N'C:\SQLskills\CreditData.mdf',
MOVE N'CreditLog' TO N'C:\SQLskills\CreditLog.ldf',
NOUNLOAD, NOREWIND, STATS = 10
GO
/*
10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Processed 19984 pages for database 'Credit', file 'CreditData' on file 1.
Processed 1 pages for database 'Credit', file 'CreditLog' on file 1.
RESTORE DATABASE successfully processed 19985 pages in 4.086 seconds (38.211 MB/sec).
*/
USE Credit;
GO
EXEC sp_helpindex Member
GO
/*
index_name,index_description,index_keys
member_corporation_link,nonclustered located on PRIMARY,corp_no
member_ident,clustered, unique, primary key located on PRIMARY,member_no
member_region_link,nonclustered located on PRIMARY,region_no
*/
EXEC sp_helpstats Member;
GO
/*
This object does not have any statistics.
*/
CREATE INDEX MemberName
ON Member (LastName, FirstName, MiddleInitial);
GO
EXEC sp_helpstats Member;
GO
/*
This object does not have any statistics.
*/
DBCC SHOW_STATISTICS('Member', 'MemberName');
GO
/*
Name Updated Rows Rows Sampled Steps Density Average key length String Index Filter Expression Unfiltered Rows
----------------- -------------------- -------------------- -------------------- ------ ------------- ------------------ ------------ ----------------------- --------------------
MemberName Jan 16 2011 10:57AM 10000 10000 26 0 21.5526 YES NULL 10000
(1 row(s) affected)
All density Average Length Columns
------------- -------------- --------------------------------------------------
0.03846154 5.6154 lastname
0.0001 16.5526 lastname, firstname
0.0001 17.5526 lastname, firstname, middleinitial
0.0001 21.5526 lastname, firstname, middleinitial, member_no
(4 row(s) affected)
RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWS
--------------- ------------- ------------- -------------------- --------------
ANDERSON 0 385 0 1
BARR 0 385 0 1
CHEN 0 385 0 1
DORR 0 385 0 1
EFLIN 0 385 0 1
FLORINI 0 385 0 1
GOHAN 0 385 0 1
HAHN 0 385 0 1
INFANTE 0 385 0 1
JONES 0 385 0 1
KAHRMANN 0 385 0 1
LING 0 385 0 1
MAKAI 0 385 0 1
NELSON 0 385 0 1
OLPHANT 0 385 0 1
PAYNTER 0 385 0 1
QUINT 0 384 0 1
RYAN 0 384 0 1
STEIN 0 384 0 1
TOLSKY 0 384 0 1
UNAKLET 0 384 0 1
VANN 0 384 0 1
WOLFMULE 0 384 0 1
XAVIER 0 384 0 1
YEONG 0 384 0 1
ZUCKER 0 384 0 1
(26 row(s) affected)
*/
SET STATISTICS IO ON
GO
SELECT m.LastName, m.FirstName, m.MiddleInitial,
m.phone_no, m.City
FROM dbo.member AS m
WHERE m.FirstName like 'kim%';
GO
/*
LastName FirstName MiddleInitial phone_no City
--------------- --------------- ------------- ------------- ---------------
ANDERSON KIMDQ
(1 row(s) affected)
Table 'member'. Scan count 1, logical reads 46, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
*/
exec sp_autostats 'Member';
GO
/*
Global statistics settings for [Credit]:
Automatic update statistics: ON
Automatic create statistics: ON
settings for table [Member]
Index Name AUTOSTATS Last Updated
-------------------------------- --------- -----------------------
[member_ident] ON 2008-08-26 17:18:12.593
[member_corporation_link] ON 2008-08-26 17:18:12.673
[member_region_link] ON 2008-08-26 17:18:12.793
[MemberName] ON 2011-01-16 10:57:07.027
[_WA_Sys_00000003_0CBAE877] ON 2011-01-16 16:21:47.097
(5 row(s) affected)
*/
UPDATE STATISTICS [dbo].[Member]
WITH FULLSCAN
GO
exec sp_autostats 'Member';
GO
/*
Global statistics settings for [Credit]:
Automatic update statistics: ON
Automatic create statistics: ON
settings for table [Member]
Index Name AUTOSTATS Last Updated
-------------------------------- --------- -----------------------
[member_ident] ON 2011-01-16 19:30:23.740
[member_corporation_link] ON 2011-01-16 19:30:23.753
[member_region_link] ON 2011-01-16 19:30:23.763
[MemberName] ON 2011-01-16 19:30:23.783
[_WA_Sys_00000003_0CBAE877] ON 2011-01-16 19:30:23.823
(5 row(s) affected)
*/
SQL 2008 - Backup/Restore using T-SQL
BACKUP DATABASE [TestDb] TO DISK=N'C:\download\TestDb_Adhoc_backup.bak'
WITH NAME = N'TestDb-Full Database Backup',
COPY_ONLY, NOFORMAT, NOINIT,
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
/*
10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
Processed 17912 pages for database 'TestDb', file 'TestDb' on file 1.
100 percent processed.
Processed 1 pages for database 'TestDb', file 'TestDb_log' on file 1.
BACKUP DATABASE successfully processed 17913 pages in 7.380 seconds (18.962 MB/sec).
*/
BACKUP DATABASE [TestDb] TO DISK=N'C:\download\TestDb_Adhoc_compress_backup.bak'
WITH NAME = N'TestDb-Full Database Backup',
COPY_ONLY, COMPRESSION, NOFORMAT, NOINIT,
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
/*
10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
Processed 17912 pages for database 'TestDb', file 'TestDb' on file 1.
100 percent processed.
Processed 1 pages for database 'TestDb', file 'TestDb_log' on file 1.
BACKUP DATABASE successfully processed 17913 pages in 5.422 seconds (25.809 MB/sec).
*/
RESTORE VERIFYONLY FROM DISK=N'C:\download\TestDb_Adhoc_backup.bak' WITH NOUNLOAD, NOREWIND
GO
/*
The backup set on file 1 is valid.
*/
ALTER DATABASE [TestDb] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
/*
RESTORE DATABASE [SalesDB] FROM DISK = N'C:\download\SQL08Backup.BAK' WITH FILE = 37, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [SalesDB] FROM DISK = N'C:\download\SQL08Backup.BAK' WITH FILE = 43, NOUNLOAD, STATS = 10
GO
*/
RESTORE DATABASE [TestDb] FROM DISK=N'C:\download\TestDb_Adhoc_backup.bak' WITH REPLACE, NOUNLOAD, NOREWIND, STATS = 10
GO
/*
10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Processed 17912 pages for database 'TestDb', file 'TestDb' on file 1.
Processed 1 pages for database 'TestDb', file 'TestDb_log' on file 1.
RESTORE DATABASE successfully processed 17913 pages in 4.340 seconds (32.245 MB/sec).
*/
ALTER DATABASE [TestDb] SET MULTI_USER;
GO
DBCC CHECKDB ('TestDb') WITH NO_INFOMSGS;
GO
/*
Command(s) completed successfully.
*/
Saturday, January 15, 2011
SQL 2008 Core Studies - Index Internals
/*
05 - Index Internal.sql, by review Employee table
Remark: Learned from sqlskills.com
*/
USE MCM2008;
GO
-- Creating the Employee table, its clustered index and the
-- index on SSN
CREATE TABLE Employee
(
EmployeeID INT NOT NULL IDENTITY,
LastName NCHAR(30) NOT NULL,
FirstName NCHAR(29) NOT NULL,
MiddleInitial NCHAR(1) NULL,
SSN CHAR(11) NOT NULL,
OtherColumns CHAR(258) NOT NULL DEFAULT 'Junk'
);
GO
-- Add the clustered index
ALTER TABLE Employee
ADD CONSTRAINT EmployeePK
PRIMARY KEY CLUSTERED (EmployeeID)
ON [PRIMARY];
GO
-- Add the nonclustered unique key
ALTER TABLE Employee
ADD CONSTRAINT SSNUK
UNIQUE NONCLUSTERED (SSN);
GO
SP_HELP EMPLOYEE
GO
/*
Name Owner Type Created_datetime
---------- ------ ------------ -----------------------
Employee dbo user table 2011-01-15 15:31:25.047
Column_name Type Computed Length Prec Scale Nullable TrimTrailingBlanks FixedLenNullInSource Collation
---------------- ------- --------- ----------- ----- ----- --------- ----------------------- ----------------------------------- ------------------------------
EmployeeID int no 4 10 0 no (n/a) (n/a) NULL
LastName nchar no 60 no (n/a) (n/a) SQL_Latin1_General_CP1_CI_AS
FirstName nchar no 58 no (n/a) (n/a) SQL_Latin1_General_CP1_CI_AS
MiddleInitial nchar no 2 yes (n/a) (n/a) SQL_Latin1_General_CP1_CI_AS
SSN char no 11 no no no SQL_Latin1_General_CP1_CI_AS
OtherColumns char no 258 no no no SQL_Latin1_General_CP1_CI_AS
Identity Seed Increment Not For Replication
----------------- ---------- -------------- -------------------
EmployeeID 1 1 0
RowGuidCol
------------------------------------
No rowguidcol column defined.
Data_located_on_filegroup
-----------------------------------
PRIMARY
index_name index_description index_keys
-------------------- --------------------------------------------------------------------------------- ------------------------
EmployeePK clustered, unique, primary key located on PRIMARY EmployeeID
SSNUK nonclustered, unique, unique key located on PRIMARY SSN
constraint_type constraint_name delete_action update_action status_enabled status_for_replication constraint_keys
------------------------------------ ---- ------------------------------------- ------------- ------------- -------------- ---------------------- ---------------------
DEFAULT on column OtherColumns DF__Employee__OtherC__00551192 (n/a) (n/a) (n/a) (n/a) ('Junk')
PRIMARY KEY (clustered) EmployeePK (n/a) (n/a) (n/a) (n/a) EmployeeID
UNIQUE (non-clustered) SSNUK (n/a) (n/a) (n/a) (n/a) SSN
No foreign keys reference table 'EMPLOYEE', or you do not have permissions on referencing tables.
No views with schema binding reference table 'EMPLOYEE'.
*/
USE IndexInternals;
GO
SELECT index_depth AS D,
index_level AS L,
record_count AS 'Count',
page_count AS PgCnt,
avg_page_space_used_in_percent AS 'PgPercentFull',
min_record_size_in_bytes AS 'MinLen',
max_record_size_in_bytes AS'MaxLen',
avg_record_size_in_bytes AS 'AvgLen'
FROM sys.dm_db_index_physical_stats
(DB_ID('IndexInternals'),
OBJECT_ID('IndexInternals.dbo.Employee'),
1,
NULL,
'DETAILED');
GO
/*
D L Count PgCnt PgPercentFull MinLen MaxLen AvgLen
---- ---- -------------------- -------------------- ---------------------- ----------- ----------- ----------------------
3 0 80000 4000 99.3081294786261 400 400 400
3 1 4000 7 91.7540400296516 11 11 11
3 2 7 1 1.09957993575488 11 11 11
(3 row(s) affected)
*/
USE master;
go
IF OBJECTPROPERTY(object_id('sp_tablepages'), 'IsUserTable') IS NOT NULL
DROP TABLE sp_tablepages;
go
CREATE TABLE sp_tablepages
(
PageFID tinyint,
PagePID int,
IAMFID tinyint,
IAMPID int,
ObjectID int,
IndexID tinyint,
PartitionNumber tinyint,
PartitionID bigint,
iam_chain_type varchar(30),
PageType tinyint,
IndexLevel tinyint,
NextPageFID tinyint,
NextPagePID int,
PrevPageFID tinyint,
PrevPagePID int,
CONSTRAINT sp_tablepages_PK
PRIMARY KEY (PageFID, PagePID)
);
GO
------------------------------------------------------------------------------
-- How do you use sp_tablepages?
-- Just truncate the table before insert and then select!
------------------------------------------------------------------------------
USE IndexInternals;
GO
TRUNCATE TABLE sp_tablepages;
INSERT INTO sp_tablepages
--EXEC ('DBCC IND (AdventureWorks2008, [Sales.SalesOrderDetail], -1)');
EXEC ('DBCC IND (IndexInternals, Employee, 1)');
GO
SELECT IndexLevel
, PageFID
, PagePID
, PrevPageFID
, PrevPagePID
, NextPageFID
, NextPagePID
FROM sp_tablepages
ORDER BY IndexLevel DESC, PrevPagePID;
GO
sp_helpindex 'Employee'
GO
/*
index_name index_description index_keys
----------------- ----------------------------------------------------------- ---------------
EmployeePK clustered, unique, primary key located on PRIMARY EmployeeID
EmployeeSSNUK nonclustered, unique, unique key located on PRIMARY SSN
*/
SELECT index_depth AS D,
index_level AS L,
record_count AS 'Count',
page_count AS PgCnt,
avg_page_space_used_in_percent AS 'PgPercentFull',
min_record_size_in_bytes AS 'MinLen',
max_record_size_in_bytes AS'MaxLen',
avg_record_size_in_bytes AS 'AvgLen'
FROM sys.dm_db_index_physical_stats
(DB_ID('IndexInternals'),
OBJECT_ID('IndexInternals.dbo.Employee'),
2,
NULL,
'DETAILED');
/*
D L Count PgCnt PgPercentFull MinLen MaxLen AvgLen
---- ---- -------------------- -------------------- ---------------------- ----------- ----------- ----------------------
2 0 80000 179 99.3661106992834 16 16 16
2 1 179 1 44.2055843834939 18 18 18
(2 row(s) affected)
*/
SET STATISTICS IO ON
SELECT e.*
FROM dbo.Employee AS e
WHERE e.SSN = '123-07-9980';
GO
/*
EmployeeID LastName FirstName MiddleInitial SSN OtherColumns
----------- ------------------------------ ----------------------------- ------------- ----------- -----------------------
37281 Ugo A. Scott 123-07-9980 Junk
(1 row(s) affected)
Table 'Employee'. Scan count 0, logical reads 5, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
*/
SQL 2008 Core Studies - Log File Internals
/*
04 - Logfile Internal.sql, how a transaction log
is circular in nature and how it can skip
active VLFs
Remark: Learned from sqlskills.com
*/
USE master
GO
IF DATABASEPROPERTY ('MCM2008', 'Version') >0
DROP DATABASE MCM2008;
CREATE DATABASE MCM2008 ON PRIMARY (
NAME = 'MCM2008DATA',
FILENAME = N'C:\SQLskills\MCM2008_data.mdf')
LOG ON (
NAME = 'MCM2008_log',
FILENAME = N'C:\SQLskills\MCM2008_log.ldf',
SIZE = 5MB,
FILEGROWTH = 1MB);
GO
USE MCM2008;
GO
SET NOCOUNT ON;
GO
-- Make sure the database is in SIMPLE
-- recovery model
ALTER DATABASE MCM2008 SET RECOVERY SIMPLE;
GO
-- What does the log look like?
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 19 2 64 0
2 1245184 1253376 0 0 0 0
2 1245184 2498560 0 0 0 0
2 1499136 3743744 0 0 0 0
*/
-- Create a table that will grow very
-- quickly and genrate lots of transaction
-- log
CREATE TABLE BigRows (
c1 INT IDENTITY,
c2 CHAR (8000) DEFAULT 'a');
GO
-- Insert some rows to fill the first
-- two VLFs and start the third
INSERT INTO BigRows DEFAULT VALUES;
GO 300
-- What does the log look like now
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 19 2 64 0
2 1245184 1253376 20 2 64 0
2 1245184 2498560 21 2 64 0
2 1499136 3743744 0 0 0 0
*/
-- Now start an explicit transaction which
-- will hold VLF 3 and onwards active
BEGIN TRAN
INSERT INTO BigRows DEFAULT VALUES;
GO
-- Now checkpoint to clear the first two
-- VLFs and look at the log again
CHECKPOINT;
GO
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 19 0 64 0
2 1245184 1253376 20 0 64 0
2 1245184 2498560 21 2 64 0
2 1499136 3743744 0 0 0 0
(4 row(s) affected)
*/
-- Now add some more rows that will fill
-- up VLFs 3 and 4 and then wrap around
INSERT INTO BigRows DEFAULT VALUES;
GO 300
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 23 2 128 0
2 1245184 1253376 20 0 64 0
2 1245184 2498560 21 2 64 0
2 1499136 3743744 22 2 64 0
(4 row(s) affected)
*/
-- Now add some more rows - the log is
-- forced to grow. What do the VLF
-- sequence number look like?
INSERT INTO BigRows DEFAULT VALUES;
GO 300
DBCC LOGINFO;
GO
/*
4 new VLFs created because of auto-grow,
4 new VLFs created because of space reseving for rollback.
*/
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 23 2 128 0
2 1245184 1253376 24 2 128 0
2 1245184 2498560 21 2 64 0
2 1499136 3743744 22 2 64 0
2 253952 5242880 25 2 64 24000000061600024
2 253952 5496832 26 2 64 24000000061600024
2 253952 5750784 27 2 64 24000000061600024
2 286720 6004736 0 0 0 24000000061600024
2 253952 6291456 0 0 0 24000000212700024
2 253952 6545408 0 0 0 24000000212700024
2 253952 6799360 0 0 0 24000000212700024
2 286720 7053312 0 0 0 24000000212700024
(12 row(s) affected)
*/
-- Will checkpoint clear it now?
CHECKPOINT;
GO
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 23 2 128 0
2 1245184 1253376 24 2 128 0
2 1245184 2498560 21 2 64 0
2 1499136 3743744 22 2 64 0
2 253952 5242880 25 2 64 24000000061600024
2 253952 5496832 26 2 64 24000000061600024
2 253952 5750784 27 2 64 24000000061600024
2 286720 6004736 0 0 0 24000000061600024
2 253952 6291456 0 0 0 24000000212700024
2 253952 6545408 0 0 0 24000000212700024
2 253952 6799360 0 0 0 24000000212700024
2 286720 7053312 0 0 0 24000000212700024
(12 row(s) affected)
*/
-- Find the open transaction
DBCC OPENTRAN
GO
/*
Transaction information for database 'MCM2008'.
Oldest active transaction:
SPID (server process ID): 55
UID (user ID) : -1
Name : user_transaction
LSN : (21:942:2)
Start time : Jan 15 2011 12:23:17:820PM
SID : 0x01050000000000051500000088910179c111e2566c1dbe1ef4010000
*/
-- How about now?
COMMIT TRAN;
GO
CHECKPOINT;
GO
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 23 0 128 0
2 1245184 1253376 24 0 128 0
2 1245184 2498560 21 0 64 0
2 1499136 3743744 22 0 64 0
2 253952 5242880 25 0 64 24000000061600024
2 253952 5496832 26 0 64 24000000061600024
2 253952 5750784 27 2 64 24000000061600024
2 286720 6004736 0 0 0 24000000061600024
2 253952 6291456 0 0 0 24000000212700024
2 253952 6545408 0 0 0 24000000212700024
2 253952 6799360 0 0 0 24000000212700024
2 286720 7053312 0 0 0 24000000212700024
(12 row(s) affected)
*/
-- Insert more rows to wrap the transaction
-- log, pay attention to "Parity" column.
INSERT INTO BigRows DEFAULT VALUES;
GO 400
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 23 0 128 0
2 1245184 1253376 24 0 128 0
2 1245184 2498560 33 2 128 0
2 1499136 3743744 34 2 128 0
2 253952 5242880 25 0 64 24000000061600024
2 253952 5496832 26 0 64 24000000061600024
2 253952 5750784 27 2 64 24000000061600024
2 286720 6004736 28 2 64 24000000061600024
2 253952 6291456 29 2 64 24000000212700024
2 253952 6545408 30 2 64 24000000212700024
2 253952 6799360 31 2 64 24000000212700024
2 286720 7053312 32 2 64 24000000212700024
(12 row(s) affected)
*/
INSERT INTO BigRows DEFAULT VALUES;
GO 400
DBCC LOGINFO;
GO
/*
FileId FileSize StartOffset FSeqNo Status Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2 1245184 8192 35 2 64 0
2 1245184 1253376 36 2 64 0
2 1245184 2498560 33 0 128 0
2 1499136 3743744 34 0 128 0
2 253952 5242880 37 2 128 24000000061600024
2 253952 5496832 38 2 128 24000000061600024
2 253952 5750784 39 2 128 24000000061600024
2 286720 6004736 40 2 128 24000000061600024
2 253952 6291456 29 0 64 24000000212700024
2 253952 6545408 30 0 64 24000000212700024
2 253952 6799360 31 0 64 24000000212700024
2 286720 7053312 32 0 64 24000000212700024
(12 row(s) affected)
*/
Subscribe to:
Posts (Atom)