Exam 70-457 – Skills Being Measured

I’ve finally begun reading through the 70-462 exam guide (Administering Microsoft SQL Server 2012 Databases).  I not actually going to take this exam; I’m going to do the 70-457 and 70-458 upgrade exams instead of 70-461, 70-462 and 70-463.  My original plan was just to read the 70-462 guide cover to cover but I thought it’s probably a good idea to see how the topics from 461, 462 and 463 have been split over 457 and 458.  It turns out there is no overlapping and the “skills being measured” in 457 are the entire skills set for 461 and the first half of the skills from 462.  458 is then the second half of 462 and the entire 463.

My plan therefore is to learn only the topics from 462 that are covered in 457, take the exam (and pass it!) then learn the topics from 462 that are covered in 458.

What is also quite handy is the first page in the 462 guide tells you which chapter and lesson in the book corresponds to which topic in the exam (there are a couple of typos as the reference to Ch 3, L 3 should actually be Ch 3, L 2, and there is no Ch 9, L 6).

Here is the full list of “skills being measured” in exam 457.  For the topics covered in 462 I’ve included the chapter and lesson number.

70-457: Skills Being Measured

This exam measures your ability to accomplish the technical tasks listed below.

The information after “This objective may include but is not limited to” is intended to further define or scope the objective by describing the types of skills and topics that may be tested for the objective. However, it is not an exhaustive list of skills and topics that could be included on the exam for a given skill area. You may be tested on other skills and topics related to the objective that are not explicitly listed here.

Create Database Objects (70-461)

  • Create and alter tables using T-SQL syntax (simple statements).
    • This objective may include but is not limited to: create tables without using the built-in tools; ALTER; DROP; ALTER COLUMN; CREATE
  • Design views.
    • This objective may include but is not limited to: ensure code non regression by keeping consistent signature for procedure, views, and function (interfaces); security implications
  • Create and alter DML triggers.
    • This objective may include but is not limited to: inserted and deleted tables; nested triggers; types of triggers; update functions; handle multiple rows in a session; performance implications of triggers

Work with Data (70-461)

  • Query data by using SELECT statements.
    • This objective may include but is not limited to: use the ranking function to select top(X) rows for multiple categories in a single query; write and perform queries efficiently using the new code items such as synonyms and joins (except, intersect); implement logic which uses dynamic SQL and system metadata; write efficient, technically complex SQL queries, including all types of joins versus the use of derived tables; determine what code may or may not execute based on the tables provided; given a table with constraints, determine which statement set would load a table; use and understand different data access technologies; CASE versus ISNULL versus COALESCE
  • Implement sub-queries.
    • This objective may include but is not limited to: identify problematic elements in query plans; pivot and unpivot; apply operator; cte statement; with statement
  • Implement data types.
    • This objective may include but is not limited to: use appropriate data; understand the uses and limitations of each data type; impact of GUID (newid, newsequentialid) on database performance, when to use which data type for columns

Modify Data (70-461)

  • Create and alter stored procedures (simple statements).
    • This objective may include but is not limited to: write a stored procedure to meet a given set of requirements; branching logic; create stored procedures and other programmatic objects; techniques for developing stored procedures; different types of stored procedure results; create a stored procedure for data access layer; program stored procedures, triggers, and functions with T-SQL
  • Modify data by using INSERT, UPDATE, and DELETE statements.
    • This objective may include but is not limited to: given a set of code with defaults, constraints, and triggers, determine the output of a set of DDL; know which SQL statements are best to solve common requirements; use output statement
  • Work with functions.
    • This objective may include but is not limited to: understand deterministic and non-deterministic functions; scalar and table values; apply built-in scalar functions; create and alter user-defined functions (UDFs)

Troubleshoot and Optimize Queries (70-461)

  • Optimize queries.
    • This objective may include but is not limited to: understand statistics; read query plans; plan guides; DMVs; hints; statistics IO; dynamic vs. parameterized queries; describe the different join types (HASH, MERGE, LOOP) and describe the scenarios in which they would be used
  • Manage transactions.
    • This objective may include but is not limited to: mark a transaction; understand begin tran, commit, and rollback; implicit vs. explicit transactions; isolation levels; scope and type of locks; trancount
  • Evaluate the use of row-based operations vs. set-based operations.
    • This objective may include but is not limited to: when to use cursors; impact of scalar UDFs; combine multiple DML operations
  • Implement error handling.
    • This objective may include but is not limited to: implement try/catch/throw; use set based rather than row based logic; transaction management

Install and Configure SQL Server

  • Plan installation. (70-462: Ch1: L1)
    • This objective may include but is not limited to: evaluate installation requirements; design the installation of SQL Server and its components (including drives and service accounts); plan scale up vs. scale out basics; plan for capacity, including if/when to shrink, grow, autogrow, and monitor growth; manage the technologies that influence SQL architecture (including service broker, full text, and scale out); design the storage for new databases (drives, filegroups, partitioning); design database infrastructure; configure a SQL Server standby database for reporting purposes; Windows-level security and service level security; Core mode installation; benchmark a server before using it in a production environment (SQLIO, Tests on SQL Instance); choose the right hardware
  • Install SQL Server and related services. (70-462: Ch1: L2)
    • This objective may include but is not limited to: test connectivity; enable and disable features; install SQL Server database engine and SSIS (not SSRS and SSAS); configure an operating system disk
  • Implement a migration strategy. (70-462: Ch4: L1)
    • This objective may include but is not limited to: restore vs. detach/attach; migrate security; migrate from a previous version; migrate to new hardware; migrate systems and data from other sources
  • Configure additional SQL Server components. (70-462: Ch3: L1)
    • This objective may include but is not limited to: set up and configure Analysis Services (AS), Reporting Services (RS), and SharePoint integration in a complex and highly secure environment; configure full-text indexing; SQL Server Integration Services (SSIS) security; filestream; filetable
  • Manage SQL Server Agent. (70-462: Ch11: L1)
    • This objective may include but is not limited to: create, maintain, and monitor jobs; administer jobs and alerts; automate (setup, maintenance, monitoring) across multiple databases and multiple instances; send to “Manage SQL Server Agent jobs”

Maintain Instances and Databases

  • Manage and configure databases. (70-462: Ch3: L2)
    • This objective may include but is not limited to: design multiple file groups; database configuration and standardization: autoclose, autoshrink, recovery models; manage file space, including adding new filegroups and moving objects from one filegroup to another; implement and configure contained databases; data compression; configure Transparent Data Encryption (TDE); partitioning; manage log file growth; Database Console Commands (DBCC)
  • Configure SQL Server instances. (70-462: Ch2: L1)
    • This objective may include but is not limited to: configure and standardize a database including autoclose, autoshrink, recovery models; install default and named instances; configure SQL to use only certain CPUs (for example, affinity masks); configure server level settings; configure many databases/instance, many instances/server, virtualization; configure clustered instances including Microsoft Distributed Transaction Coordinator (MSDTC); memory allocation; database mail; configure SQL Server engine including memory, filffactor, sp_configure, and default options
  • Implement a SQL Server clustered instance. (70-462: Ch8: L1)
    • This objective may include but is not limited to: install a cluster; manage multiple instances on a cluster; set up subnet clustering; recover from a failed cluster node
  • Manage SQL Server instances. (70-462: Ch2: L2)
    • This objective may include but is not limited to: install an instance; manage interaction of instances; SQL patch management; install additional instances; manage resource utilization by using Resource Governor; cycle error logs

Optimize and Troubleshoot SQL Server

  • Identify and resolve concurrency problems. (70-462: Ch10: L2)
    • This objective may include but is not limited to: examine deadlocking issues using the SQL server logs using trace flags; design reporting database infrastructure (replicated databases); monitor via Dynamic Management Views (DMV) or other Microsoft product; diagnose blocking, live locking, and deadlocking; diagnose waits; performance detection with built-in DMVs; locate and if necessary kill processes that are blocking or claiming all resources
  • Collect and analyze troubleshooting data. (70-462: Ch9: L1-5)
    • This objective may include but is not limited to: monitor using Profiler, collect performance data by using System Monitor, collect trace data by using SQL Server Profiler, identify transactional replication problems; identify and troubleshoot data access problems; gather performance metrics; identify potential problems before they cause service interruptions; identify performance problems, use Extended Events (XEvents) and DMVs; create alerts on critical server condition; monitor data and server access by creating audit and other controls; identify IO vs. memory vs. CPU bottlenecks; use the Data Collector tool
  • Audit SQL Server instances. (70-462: Ch6: L3)
    • This objective may include but is not limited to: implement a security strategy for auditing and controlling the instance; configure an audit; configure server audits; track who modified an object; monitor elevated privileges as well as unsolicited attempts to connect; policy-based management

In summary, the chapters and lessons from 462 that are required for 457 are as follows (where no lesson number is mentioned, the entire chapter is required):

  1. Ch 1
  2. Ch 2
  3. Ch 3
  4. Ch 4, L 1
  5. Ch 6, L 3
  6. Ch 8, L 1
  7. Ch 9
  8. Ch 10, L 2
  9. Ch 11, L 1

Hopefully just concentrating on these chapters should allow me to take 70-457 sooner.


Exam prep not going well!

In my end of year review at work I set myself the challenge of upgrading my MCITP 2008 qualification to the 2012 equivalent. This involves passing exams 70-457, 70-458 and 70-459. My weakest area is probably the DBA side of things so my idea was to read the exam guide for the 70-462 exam. I read the first lesson a while ago but the Games of Thrones and Hunger Games books have taken up all my train journey recently. At work I’ve not had time to look at any DBA stuff but I have been learning a few new things as well as enhancing my knowledge of Service Broker which I used for the first time at the end of last year.
I recently moved into the DB team for my company’s project that is rewriting our legacy systems and creating an API for our products and external customers to utilise and have been lucky enough to work on three large pieces of work.
Firstly, we had to rewrite the ETL process which currently moves a tiny subsection of our legacy data to the new platform.
Secondly, I was asked to prototype a framework that would allow us to get data in a specific format and send it to an application whenever the data changed. Initially this was to allow us to generate search strings to be sent to Elasticsearch but needed to be flexible enough to be able to send data to any application or service in the future, for example, Hadoop or Amazon web services. We also needed the ability to resend everything if need be. This prototype evolved over the weeks but is now live.
Most recently I was asked to come up with a way to ensure no SQL objects are accidentally removed or updated from any of our environments due to human error or mistakes when merging our DB solution from environment to environment (we have three branches and a live code base in TFS). I ended up writing a couple of CLR stored procedures that generated DB unit tests for all objects within our databases, with each test just checking for the existence of that object, e.g. a schema, column, foreign key etc. This allowed me to generate just shy of 5000 tests in under 2 minutes and allows us to quickly generate existence tests for any new objects we create. I’ve written reports that tell us if an object exists on an environment that we don’t have a test for and also if any objects don’t conform to our namig conventions. I did look at using policy-based management to handle this but it didn’t go into enough level of detail for my needs.
Anyway, this is what I’ve been doing the last couple of months and I will soon be adding some notes about my experiences using Service Broker, Elasticsearch, TFS, MSBuild, CLR stored procs and my brief delve into policy-based management.