34
Today’s Topics Backup Recap Restoration and Recovery T-SQL Commands INSERT UPDATE DELETE BEGIN TRAN COMMIT TRAN ROLLBACK TRAN

Today’s Topics Backup Recap Restoration and Recovery T-SQL Commands –INSERT –UPDATE –DELETE –BEGIN TRAN –COMMIT TRAN –ROLLBACK TRAN

Embed Size (px)

Citation preview

Today’s Topics

Backup Recap Restoration and Recovery T-SQL Commands

– INSERT– UPDATE– DELETE– BEGIN TRAN– COMMIT TRAN– ROLLBACK TRAN

Backup Types

Full backup Differential backup Transaction log backup File/filegroup backup

Disaster Recovery in SQL

SQL Server examines the Transaction log, going from the last checkpoint to the point at which the server was shut down or failed.

Committed transactions that have not been written to the database are rolled forward and written to the database.

Uncommitted transactions are rolled back and not written to the database.

Recovery Types

Automatic Recovery– occurs when you start SQL Server– ensures data in each db is consistent– checks the transaction log

Manual Recovery– this is done by the administrator– involves restoring one of the backups

Full Backup Differential Backup Log Backup

Page 258 has more info on Recovery

Verifying backup files

In Enterprise Manager, Backup folder under Management

Backup/Restore info in msdb system database

Transact SQL commands– RESTORE LABELONLY (media info)– RESTORE HEADERONLY (backup set

info)– RESTORE FILELISTONLY (file info)

Table 9-2 on Page 291

Restoring a Database

Restoring is the process of recovering the database to its original form

Restoring can be done using Enterprise Manager Transact SQL commands

– RESTORE DATABASE– RESTORE LOG

EM - Restore using database

Restore using filegroup/file

Restore using device

Restore options

Recovery completion options

RECOVERY - Instructs the restore operation to rollback any uncommitted transactions - you cannot apply any more transaction logs

NORECOVERY - Instructs the restore operation to not roll back any uncommitted transactions - lets you apply more transaction logs

STAND BY - Leave database read-only option - lets you apply additional transaction logs

Restoring system databases

Do the following Exercises Page 291 Page 298 Page 303 through 306 Any questions Take a break

Restore using TSQL

Two main commands RESTORE DATABASE RESTORE LOG Examples on Pages 306-307

RESTORE DATABASE

RESTORE DATABASE syntax:RESTORE DATABASE database_name [file_or_filegroup]

[FROM backup_device]

[WITH

[RESTRICTED_USER | DBO_ONLY]

[[,] FILE = file_number]

[[,] PASSWORD = password]

[[,] MEDIANAME = medianame]

[[,] MEDIAPASSWORD = password]

[[,] MOVE 'logical_filename' TO 'os_filename']

[[,] KEEP_REPLICATION]

[[,] NORECOVERY | RECOVERY | STANDBY = undofile]

[[,] NOREWIND | REWIND]

[[,] NOUNLOAD | UNLOAD] [[,] REPLACE] [[,] RESTART]

[[,] STATS = percentage]

]

RESTORE LOG RESTORE LOG syntax:RESTORE LOG database_name [FROM backup_device]

[WITH [RESTRICTED_USER | DBO_ONLY][[,] FILE = file_number][[,] PASSWORD = password][[,] MEDIANAME = medianame][[,] MEDIAPASSWORD = password][[,] KEEP_REPLICATION][[,] MOVE 'logical_filename' TO 'os_filename'][[,] NORECOVERY | RECOVERY | STANDBY = undofile][[,] NOREWIND | REWIND][[,] NOUNLOAD | UNLOAD] [[,] RESTART][[,] STATS = percentage][[,] STOPAT = date_time] | [,] STOPATMARK = 'markname'] [AFTER date_time] [,] STOPBEFOREMARK = 'markname'[AFTER date_time]]

Restoring system databases

When the master db becomes corrupt or if the Server dies on you, you will have to – Rebuilding the master database - Page

310– Rebuilding System databases - Page

312

Try exercise on Page 308 only

Rebuilding system databases

Data manipulation

SELECT SQL statement - remember does not modify data

Modify data by using the following SQL commands:– INSERT, – UPDATE, – DELETE – TRUNCATE TABLE

INSERT statement

Inserts one or more new rows into the specified table or query.

When you use the VALUES clause, only a single row is inserted.

If you use a sub-select statement, the number of rows inserted equals the number of rows returned by the select statement.

INSERT SYNTAX

INSERT one recordINSERT [INTO]

table_name [WITH table_hints ]

| view_name | rowset function [(column_list)]

VALUES (values_list) | select_statement

| DEFAULT VALUES

INSERT with Sub-Select - multiple records

INSERT [INTO] new table_name

SELECT fields FROM old table_name

Inserting data Values can be generated for:

– IDENTITY columns – Columns with the timestamp data type – Columns with a default value – Nullable columns

When DEFAULT VALUES is specified:– Defaults will be inserted in columns with defined

defaults – IDENTITY columns will receive the next identity

value – Columns with a timestamp data type will receive

the next appropriate values – All other columns will receive a NULL

Inserting data

Insert a new Record into the Region table in Northwind database using the following– INSERT INTO REGION (RegionID,

RegionDescription) VALUES (5, ‘Midwest’)

Create a table Table1 in Northwind first. The structure should be the same as Shippers table.

Then execute this SQL– INSERT INTO TABLE1 SELECT *

FROM SHIPPERS

UPDATE statement

This statement is used to update data in the tables

Uses a WHERE clause to seek the rows that need to be updated

Can use a sub-select to update data In the absence of WHERE clause, all

the records are updated - Therefore Be careful with this!

UPDATE SYNTAX

UPDATE syntax:UPDATE table_name

[WITH table_hint] | view_name | rowset_function

SET

column_name = expression | DEFAULT | NULL

| @variable_name = expression

| @variable_name = column = expression

[FROM table_name]

[WHERE search_conditions]

[WHERE CURRNT OF [GLOBAL] cursor_name | cursor_variable]

[OPTION query_options]

UPDATE EXAMPLES

Lets say that we need to update the Contact for ‘Eastern Connection’ in the Customers table from Ann Devon to Jim Smith

We can do this using the following UPDATE CUSTOMERS SET

CONTACTNAME='Jim Smith’ WHERE COMPANYNAME=‘EASTERN CONNECTION’

Now you can review the change by doing

SELECT * FROM CUSTOMERS WHERE COMPANYNAME=‘EASTERN CONNECTION’

Deleting rows

DELETE – Remove all rows from the table – Reclaim space from table rows and

indexes – Leave the table structure and all indexes

in place

TRUNCATE TABLE:– Runs a non-logged– Resets the identity value

DELETE statement Used to delete data from tables Like the Update statement uses the

WHERE clause to located the records to delete.

In case of No WHERE clause, deletes all the records in the table

Be very careful with this one also!

DELETE SYNTAX

DELETE syntax:DELETE [FROM] table_name [WITH table_hint]

| view_name | rowset_function

[FROM table_source]

WHERE search_conditions

[WHERE CURRNT OF [GLOBAL] cursor_name | cursor_variable]

[OPTION query_options]

DELETE EXAMPLE

Lets say we want to remove the row we added in Region table earlier.– SELECT * FROM REGION will show all

the records– Get the Region Id which is 5– DELETE FROM REGION WHERE

REGIONID=5

TRUNCATE TABLE

Removes all records from a table. TRUNCATE TABLE syntax:TRUNCATE TABLE [[database.]owner.]table_name

TRUNCATE TABLE TABLE1

Transaction statements

BEGIN TRANSACTIONBEGIN TRAN[SACTION] [transaction_name |

@tran_name_var]

[WITH MARK ['description']

COMMIT TRANSACTIONCOMMIT [TRAN[SACTION]] [transaction_name |

@tran_name_var]]

ROLLBACK TRANSACTIONROLLBACK TRAN[SACTION] [transaction_name |

@tran_name_var

| savepoint_name | @savepoint_name_var]

Using transactions

Lets say we want to update the title for employees with title ‘Sales Representative’ to ‘Sales Associate’.

We will do this twice– First time we will assume that we forgot

the WHERE clause and then recover using ROLLBACK TRAN

– Second time we will do it the right way and use COMMIT TRAN

Using transactions - Part 1

Try the following begin tran update employees set title='Sales

Associate’ Now check the data - Notice all the

titles have been changed by mistake Try this rollback tran Now check it again select * from employees

Using transactions - Part 2

Now try the following begin tran update employees set title='Sales

Associate’ where title='Sales Representative'

Now check the data again - Notice all the titles have been changed correctly

Go ahead and apply the change by using

commit tran