Download presentation
Presentation is loading. Please wait.
Published byMelinda Burns Modified over 9 years ago
1
DAT332 Database Administration For Developers Stephen Wynkoop SQL Server Worldwide User’s Group www.SSWUG.orgswynk@sswug.org
2
Agenda Learn about key features that you should be aware of Backup, Restore Performance Tips Indexes, Tuning, Cursors Available Tools Q&A
3
Overall Goal Get in Get what you need Get out NEVER: SELECT * FROM mytable Be fast Be recoverable Data-wiseBackup/recover-wise
4
Multiple Instance Support Why is this interesting? There is typically a default instance (but not required) Instances can “talk” to one-another Instances can be administered separately Good for splitting environments, collation issues, testing, learning
5
Recovery Models Yes, it’s your job to work with the DBA Different Models FullSimpleBulk-logged Point in time, or “marker” recovery (drop anchor…) DO NOT wait until disaster strikes to find out the wrong measures are in place “Backups are not important Restoration/recovery is”
6
Recovery Models Database, Properties, Options….
7
Recovery Model: Full Full transaction log restore Restore the baseline db Restore the transaction logs in order Restored up to last tran. log backup Watch the transaction log physical devices Beware total reliance on tran. log Best production environment option
8
Recovery Model: Simple Backup/restore at the database level Good for development environments Disaster recovery, but not transaction recovery since the last backup “All or nothing” restore
9
Recovery Model: Bulk_logged Better for bulk operations Select into, etc. Good for a migrating database If the data exists elsewhere Can be rebuilt from other source Good for DTS move operations – control log size build-up Restore to last transaction log backup Re-bulk-operation to get current again Switch to better model for production
10
Other Recovery Options Lumigent Log Explorer BMC SQL Back-Track Allow you to potentially recover a dropped table, a specific transaction, etc.
11
SQL Server Backup Backup types/models – know them! Full (Complete) Differential Transaction log File or file group File differential Different impacts on the system Change based on production versus test environment
12
Copy/Move Database Wizard Uses sp_detach_db/sp_attach_db Beware: objects, scripting, dependencies Test, test, test Check for tasks that copy, system-level operations Check for jobs, logins, etc. Good for moving to production
13
Moving A Database To Production DTS: If you use it, be cautious and check your work JobsViews Don’t forget “system-level objects” – anything outside the db. Won’t transfer If you don’t tell it to replace data – it will append, duplicating your data
14
Creating SQL Agent Tasks Use these to automate database processes Examples: Grouping of data Creating stat summary tables Resetting counters SQL Server Agent: select Jobs, New Document your agent jobs
15
Creating A Task…
16
Maintenance Plans Sets of instructions carried out regularly Database backup Integrity check, etc.
17
Database Maintenance Plan Creates a job for the backup Creates a job for the transaction log backups Creates a job for other database maint. Tasks Re-orgShrinkEtc. Management >> SQL Server Agent >> Jobs…
18
Most Important Tabs… Backup and Tran. Log Backup Warning: disk files can get really large…
19
Shrinking The Database Right click on the db All tasks Shrink database… Can be a big performance boost Can be a big budget saver!
20
Traditional ASP Tuning Put your connection STRINGS in the global.asa Application variables (not session) NOT other variables unless you absolutely need to NOT connections themselves – very bad Remove non-essential info from the global.asa Beware SESSION versus Application
21
Global.asa(x) – Hacker’ s Dream Access = access to SQL server Consider how your application accesses the db – Read-only UIDs Move admin functions – don’t use global for their security info? Never multi-database use for an ID Live behind a physical firewall… Encrypt passwords/info
22
Stored Procedures If you’re using a SELECT over and over – consider stored procedures Compiled on the server Based on data modeling Optimized Can be encrypted Central admin Fights injection All DB interaction should go through an SP if possible
23
Indexing EXTREMELY IMPORTANT If you’re not indexing, you’re not close to full performance “Covered” queries Clustered versus not… Examine your SELECT statements Order in the SELECT
24
Using The Tuning Tools Captures the SQL statements by connection Runs remotely Tune to specific database
25
Tuning… Let profiler work with your workload Save the workload Play it back through the performance wizard Watch the cursors (resources) Watch the open connections (memory) Watch the DB growth Auto-grow is nice, but… …Out of disk space!
26
Index Tuning Wizard Use the Profiler tool Capture activity to a file Re-run that activity through the profiler index tuning wizard Implement, review or document the suggestions
27
More Performance Ideas Select count(*) – Table Scan Execution plans How to get them How to read them Query Analyzer >> ctrl-K or “results in grid” drop down – Show Execution Plan
28
Example Plan
29
Additional Performance Tips SET NOCOUNT ON in stored procedures Stops “10 rows affected…” Query Analyzer – What operation is faster? Set up statements to compare Run with showplan Shows relative execution times
30
More Performance Tips Check for indexes on… JOINsViews Keep statistics updated (esp. after mass updates) sp_updatestats Also “auto update statistics” at database level
31
Script And Schema Control Save your scripts offline Don’t rely on the DBA for your backups Version control applied to scripts Script out the entire db after major changes
32
Scripting Objects
33
Security Don’t have all developers login with the same UID Don’t use the DBA UIDs for developers Do keep UIDs confidential Don’t let an application use a developer/user/dba login
34
SQL Injection Can provide alarming access Select * from myTable where lname=‘” request.form(“lastname”) & “’” Form input ’ or ‘a’=‘a Result: select * from mytable where lname=‘’ or ‘a’=‘a’ How to protect against it Stored procedures Watching quotes Control statement generation Parameter queries Best Description: Don’t let someone else write your code… - Steve Kass
35
Other Points To Consider Web site: session timeout Defaults to 20 minutes Web site: HTTP keep-alives Forces IIS to keep around information on the connection (memory) Cursors versus more simple SELECTs Storing summary information versus detail for later calculation Move reporting support to a different server
36
Use Available Tools Query Analyzer Enterprise Manager SQL Agent Scripting Engine Wizards! Profiler – use it as first line of investigation Import/Export/Move Tools – but with caution
37
Online Resources Sswug.orgSqlServerCentral.comMSSQLserver.comSql-Server-Performance.comSQLSecurity.comSQLTeam.comSQLJunkies.com
38
Third-Party Tools Imceda – compressed/faster backups Idera – monitoring, management tools BMC – recovery tools Sonasoft – automated disaster recovery Sql Power Tools – low-impact monitoring Red-Gate – schema comparison, synchronization
39
Q1:Overall satisfaction with the session Q2:Usefulness of the information Q3:Presenter’s knowledge of the subject Q4:Presenter’s presentation skills Q5:Effectiveness of the presentation Please fill out a session evaluation on CommNet
40
Questions… ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Stephen Wynkoop swynk@sswug.org (be sure to grab a performance tips poster from The SQL Server booth in the exhibit hall)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.