Microsoft KB Archive/920926

From BetaArchive Wiki
Knowledge Base


MCTS Self-Paced Training Kit (Exam 70-431): Microsoft® SQL Server™ 2005—Implementation and Maintenance comments and corrections

Article ID: 920926

Article Last Modified on 10/30/2007



APPLIES TO

  • MCTS Self-Paced Training Kit (Exam 70-431): Microsoft SQL Server 2005 - Implementation and Maintenance, ISBN 0-7356-2271-X



SUMMARY

This article contains comments, corrections, and information about known errors relating to the Microsoft Press book MCTS Self-Paced Training Kit (Exam 70-431): Microsoft SQL Server 2005 - Implementation and Maintenance, 0-7356-2271-X.

The following topics are covered:

  • CD-ROM: Missing IDENTITY(1,1) property in \Practice Files\Chapter8\Lesson 1\CompleteLesson1.sql file
  • CD-ROM: Answer to Readiness Review question incorrect
  • CD-ROM: Readiness Review assessment answer incorrect
  • Page 12: Mistake in memory limitation for SQL Server 2005 Workgroup Edition
  • Page 13: Processor type named incorrectly
  • Page 22: Local system account does have network access
  • Page 28: Default instance created rather than named instance
  • Page 58: The description of the practice references a read-only filegroup, which is not created
  • Page 84: Nesting roles are reversed
  • Page 97: Northwind database not found on CD-ROM
  • Page 113: Explanation of the size declaration of character data types is incorrect
  • Page 114: 1,073,741,824 should be 2,147,483,647 and 536,870,912 should be 1,073,741,823
  • Page 118: Identify used in place of Identity
  • Page 120: row should be column
  • Page 150: Incorrect comparison of a 4-byte column to a 60-byte column
  • Page 175: Object selected from subquery should be EmployeeID
  • Page 213: view should be index
  • Page 215: "view" should be "index"
  • Page 323: Incorrect parameter used in OPENXML statement
  • Page 323: Incorrect Flag Value in code sample
  • Page 328: Incorrect duplicate phrase used in the same sentence
  • Page 363: The word principle is used in place of the word principal
  • Page 367: AFTER triggers can only be created on tables
  • Page 368: INSERTED and DELETED tables can be viewed with OUTPUT clause
  • Page 370: "INSERTED" should be "DELETED"
  • Page 374: Incorrect wording of Question 1
  • Page 395: /t should be \t and /n should be \n
  • Page 396: /t should be \t and /n should be \n
  • Page 422: PUBS1B.BAK file referenced in place of PUBS1A.BAK
  • Page 423: BACKUP LOG command backs up transaction log
  • Page 435: Error in code sample
  • Page 435: Additional steps required for Lesson 2 practice
  • Page 484: Closing parenthesis missing at the end of CREATE ENDPOINT statement
  • Page 506: Maintenance Tasks not listed in Maintenance Plan Wizard
  • Page 562: fn_tracegettable referenced in place of fn_trace_gettable
  • Page 586: Incorrect word used in place of deadlocks
  • Page 595: blocking_process_id referenced in place of blocking_session_id
  • Page 624: Customer used in place of custom
  • Page 640: "mirror" should be "witness"
  • Page 672: AdventureWorks.bck should be AdventureWorks.bak
  • Page 683: Default behavior for Standby mode misrepresented
  • Page 704: Queue Reader Agent application filename incorrect
  • Page 710: Incorrect folder name to disable publishing
  • Page 734: Distribution Database located in an incorrect Agent row
  • Page 739: Incorrect computer address used in practice
  • Page 755: Delete tuid_ProductAudit before performing Practice 4
  • Page 785: Extraneous space in code sample
  • Page 832: Search term missing from the second code sample
  • Page 851: Correct answers should also include C
  • Page 869: Explanation for Answer A is partially incorrect
  • Page 879: sys.dm_db_index_physical-stats referenced in place of sys.dm_db_index_physical_stats in the answers to Chapter 12, Case Scenario 1
  • Page 901: "revolver" should be "resolver"
  • Page 902: The correct answer to Lesson 3 Question 1 is C


MORE INFORMATION

CD-ROM: Missing IDENTITY(1,1) property in \Practice Files\Chapter8\Lesson 1\CompleteLesson1.sql file

Line 84 in \Practice Files\Chapter8\Lesson 1\CompleteLesson1.sql reads:

ID INT NOT NULL,


It should read:

ID INT IDENTITY(1,1) NOT NULL,



CD-ROM: Answer to Readiness Review question incorrect

In the Readiness Review Assessment, one of the questions reads:

"The Surveys table in the Geology database has four indexes associated with : Surveys.IndexA, Surveys.IndexB, Surveys.IndexC, and Surveys.IndexD.

You want to rebuild Surveys.IndexC while keeping the Surveys table available to database users who might wish to access it."

The answer given is incorrect.

Change:
"ALTER INDEX Surveys.IndexC ON Surveys
REBUILD;
ONLINE = ON"

To:
"ALTER INDEX Surveys.IndexC ON Surveys
REBUILD WITH
ONLINE = ON"

CD-ROM: Readiness Review assessment answer incorrect

On the Readiness Review assessment the question that reads "Which of the following commands produces a list of Sql Server Agent jobs that have been cancelled?" has an incorrect answer.

Change:

sp_help_jobhistory @run_status = 5


To:

sp_help_jobhistory @run_status = 3


Page 12: Mistake in memory limitation of SQL Server 2005 Workgroup Edition

On page 12, the third bullet point in the Memory requirements section reads:

"SQL Server 2005 Workgroup Edition: 512 MB; 1 GB or more recommended (maximum of 4 GB)"

It should read:

"SQL Server 2005 Workgroup Edition: 512 MB; 1 GB or more recommended (maximum of 3 GB)"

Page 13: Processor type named incorrectly

On page 13, under Processor requirements for 64-Bit Editions of SQL Server 2005 the 2nd bullet reads:

"X64 minimum: 1 GHz or faster AMD Opteron, AMD Athlon 64, Intel Xenon with Intel EM64T support, or Intel Pentium IV with EM64T support"

It should read:

"X64 minimum: 1 GHz or faster AMD Opteron, AMD Athlon 64, Intel Xeon with Intel EM64T support, or Intel Pentium IV with EM64T support"

Page 22: Local system account does have network access

On page 22, under the heading Built-In System Account or Domain User Account for the SQL Server and SQL Server Agent Services? the first sentence in the 3rd paragraph reads:

"The local system account is a Windows OS account that has full administrative rights on the local computer but has no network access rights."

It should read:

"The local system account is a Windows OS account that has full administrative rights on the local computer."

Page 28: Default instance created rather than named instance

On page 28, step 14 reads:

"Install a default instance, as Figure 1-7 shows."

It should read:

"Select "Named instance" and provide an appropriate name."
Figure 1-7 should be disregarded.

Page 58: The description of the practice references a read-only filegroup, which is not created

On page 58, the final sentence on the page reads:

"In this practice, you will create a database that contains several files and filegroups and then configure one filegroup as the default filegroup and another as a read-only filegroup."

It should read:

"In this practice, you will create a database that contains several files and filegroups and then configure one filegroup as the default filegroup."

Page 84: Nesting roles are reversed

On page 84, the third sentence in the fourth paragraph reads:

"You could grant that role the permissions of the entire Accounting role by nesting Accounting within AccountingMgr and then just granting the extra manager permissions to the AccountingMgr role."

It should read:

"You could grant that role the permissions of the entire Accounting role by nesting AccountingMgr within Accounting and then just granting the extra manager permissions to the AccountingMgr role."

Page 97: Northwind database not found on CD-ROM

On page 97, step 1 under Creating a Microsoft Access Linked Server reads:

"1. Browse the companion CD and copy the \Practice File\Northwind.mdb database to C:\Practice Files\Northwind.mdb"

This file is not found on the CD-ROM, but can be download at:

Northwind.exe

For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:

119591How to Obtain Microsoft Support Files from Online Services

Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.

Page 113: Explanation of the size declaration of character data types is incorrect

On page 113, the second and third sentence of the last paragraph read:

"When defining a character data type, you specify the maximum number of bytes the column is allowed to store. For example, a char(10) can store a maximum of 10 characters because each character requires one byte of storage, whereas an nchar(10) can store a maximum of five characters because each Unicode character requires two bytes of storage."

They should read:

"When defining a character data type, you specify the maximum number of characters the column is allowed to store."

Page 114: 1,073,741,824 should be 2,147,483,647 and 536,870,912 should be 1,073,741,823

On page 114, the incorrect number of characters is indicated four times.

Change:
"varchar(max) Up to 2 GB Up to 1,073,741,824 characters ANSI data type that is variable width"

To:
"varchar(max) Up to 2 GB Up to 2,147,483,647 characters ANSI data type that is variable width"

Change:
"nvarchar(max) Up to 2 GB Up to 536,870,912 characters Unicode data type that is variable width"

To:
"nvarchar(max) Up to 2 GB Up to 1,073,741,823 characters Unicode data type that is variable width"

Change:
"text Up to 2 GB Up to 1,073,741,824 characters ANSI data type that is variable width"

To:
"text Up to 2 GB Up to 2,147,483,647 characters ANSI data type that is variable width"

Change:
"ntext Up to 2 GB Up to 536,870,912 characters Unicode data type that is variable width"

To:
"ntext Up to 2 GB Up to 1,073,741,823 characters Unicode data type that is variable width"

Page 118: Identify used in place of Identity

On page 118, in the first sentence under the Identity heading it reads:

"When defining columns, you also have the ability to specify a special identify property for a single column in a table."

It should read:

"When defining columns, you also have the ability to specify a special identity property for a single column in a table."

Page 120: row should be column

On page 120, the sixth bullet point refers to a row instead of a column.

Change:
"A customer can have an optional postal code specified. Each row consumes 10 bytes of storage."

To:
"A customer can have an optional postal code specified. Each column consumes 10 bytes of storage."

Page 150: Incorrect comparison of a 4-byte column to a 60-byte column

On page 150, the third sentence reads:

"For example, an index defined on a 4-byte integer column will have five times as many values per page as an index defined on a char(60) column that requires 60 bytes of storage per page."

It should read:

"For example, an index defined on a 4-byte integer column will have fifteen times as many values per page as an index defined on a char(60) column that requires 60 bytes of storage per page."

Page 175: Object selected from subquery should be EmployeeID

On page 175, the first code sample on the page reads:

SELECT *
FROM HumanResources.Employee as E
WHERE E.EmployeeId IN
(
     SELECT AddressID
     FROM HumanResources.EmployeeAddress
)



It should read:

SELECT *
FROM HumanResources.Employee as E
WHERE E.EmployeeId IN
(
     SELECT EmployeeID
     FROM HumanResources.EmployeeAddress
)



Page 213: view should be index

On page 213, the first bullet point in the Lesson Summary refers to a view rather than an index.

Change:
"Defining a partition function is the first step of partitioning a table, view, or indexed view."

To:
"Defining a partition function is the first step of partitioning a table, index, or indexed view."

Page 215: "view" should be "index"

On page 215, the first sentence of the second to the last paragraph on the page uses the word "view" instead of "index".

Change:
"Notice that we still have not specified a table, view, or indexed view or referenced any other object in the database with the exception of the partition function."

To:
"Notice that we still have not specified a table, index, or indexed view or referenced any other object in the database with the exception of the partition function."

Page 323: Incorrect parameter used in OPENXML statement

On page 323, the fifth line of the code sample reads:

FROM OPENXML( @h , '/Departments/Department/Employees/Employee', 3)


It should read:

FROM OPENXML( @h , '/Departments/Department/Employees/Employee', 0)



Page 323: Incorrect Flag Value in code sample

On page 323, the 4th line of the code sample reads:

FROM OPENXML( @h , '/Departments/Department/Employees/Employee', 3)


It should read:

FROM OPENXML( @h , '/Departments/Department/Employees/Employee', 0)



Page 328: Incorrect duplicate phrase used in the same sentence

On page 328, Step 3 reads:

"Use the SQLXML API to load both the annotated schema and the XML data that needs to be loaded into the database and to bulk load the XML data into the database."

It should read:

"Use the SQLXML API to load both the annotated schema and to bulk load the XML data into the database. "

Page 363: The word principle is used in place of the word principal

On page 363, the code sample and following sentence of the "Assign Permissions to a Role for a Stored Procedure" section reads:

"

GRANT EXECUTE ON <stored procedure> TO <database principle>


Chapter 2, “Configuring SQL Server 2005,” covers the GRANT statement and database principles."

It should read:

"

GRANT EXECUTE ON <stored procedure> TO <database principal>


Chapter 2, “Configuring SQL Server 2005,” covers the GRANT statement and database principals."

Page 367: AFTER triggers can only be created on tables

On page 367, the last sentence in the third paragraph reads:

" And you can create any number of AFTER triggers on a view or table."

It should read:

" And you can create any number of AFTER triggers on a table."

Page 368: INSERTED and DELETED tables can be viewed with OUTPUT clause

On page 368, The second sentence in the second to last paragraph reads:

"INSERTED and DELETED tables are visible only within a trigger and cannot be accessed by any other contstruct such as a stored procedure or function."

It should read:

"INSERTED and DELETED tables can be viewed by using an OUTPUT clause."

Page 370: "INSERTED" should be "DELETED"

On page 370, in the code sample the third line within the BEGIN TRY block contains an incorrect table.

Change:

SELECT 'BEFORE', INSERTED.PayRate, @now, suser_sname()


To:

SELECT 'BEFORE', DELETED.PayRate, @now, suser_sname()


Page 374: Incorrect wording of Question 1

On page 374, Question 1 is incorrect in regards to the content of the chapter.

Change:
"1. Which of the following operators is allowed in a trigger?"

To:
"1. Which of the following operators is allowed in a trigger when it is used against the table or view that is the target of the triggering action?"

Page 395: /t should be \t and /n should be \n

On page 395, the descriptions for the FIELDTERMINATOR parameter and the ROWTERMINATOR parameter contain incorrect forward slashes.

Change:
"FIELDTERMINATOR Specifies the field or column terminator or delimiter. As with the bcp -t parameter, the default value is /t (tab character)."

To:
"FIELDTERMINATOR Specifies the field or column terminator or delimiter. As with the bcp -t parameter, the default value is \t (tab character)."

Change:
"ROWTERMINATOR Specifies the row terminator or delimiter. As with the bcp -r parameter, the default value is /n (newline character)."

To:
"ROWTERMINATOR Specifies the row terminator or delimiter. As with the bcp -r parameter, the default value is \n (newline character)."

Page 396: /t should be \t and /n should be \n

On page 396, the second sentence in Step 3 contains two incorrect values.

Change:
"Remember that the defaults for column and row terminators are /t (tab) and /n (newline), respectively."

To:
"Remember that the defaults for column and row terminators are \t (tab) and \n (newline), respectively."

Page 422: PUBS1B.BAK file referenced in place of PUBS1A.BAK

On page 422, the first line of the code sample reads:

BACKUP DATABASE PUBS TO DISK=‘C:\DEMO\BACKUP\PUBS1B.BAK’, DISK=‘C:\DEMO\BACKUP\PUBS1B.BAK’


It should read:

BACKUP DATABASE PUBS TO DISK=‘C:\DEMO\BACKUP\PUBS1A.BAK’, DISK=‘C:\DEMO\BACKUP\PUBS1B.BAK’



Page 423: BACKUP LOG command backs up transaction log

On page 423, the last step in practice 1 reads:

"9. Execute the following command to perform a full database backup to the specified disk location:
BACKUP LOG AdventureWorks TO DISK = ‘C:\TEST\AW2.TRN'"

It should read:

"9. Execute the following command to perform a full transaction log backup to the specified disk location:
BACKUP LOG AdventureWorks TO DISK = ‘C:\TEST\AW2.TRN'"

Page 435: Error in code sample

On page 435, the sample code in step 4 does not function.

Change:

RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AW.BAK’ WITH NORECOVERY
RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AWDIFF1.BAK’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AW2.TRN’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AWTAIL.TRN’ WITH RECOVERY


To:

RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AW.BAK’ WITH NORECOVERY
RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AWDIFF1.BAK’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AW2.TRN’ WITH RECOVERY



Page 435: Additional steps required for Lesson 2 practice

On page 435, in Step 4 of the Practice two additional RESTORE commands need to be executed before the backup tail can be restored.

Change:

RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AW.BAK’ WITH NORECOVERY
RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AWDIFF1.BAK’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AW2.TRN’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AWTAIL.TRN’ WITH RECOVERY


To:

RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AW.BAK’ WITH NORECOVERY
RESTORE DATABASE AdventureWorks FROM DISK = ’C:\TEST\AWDIFF1.BAK’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AW2.TRN’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AW3.TRN’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AW4.TRN’ WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = ’C:\TEST\AWTAIL.TRN’ WITH RECOVERY



Page 484: Closing parenthesis missing at the end of CREATE ENDPOINT statement

On page 484, the example CREATE ENDPOINT statement reads:

CREATE ENDPOINT endPointName [ AUTHORIZATION login ]
STATE = { STARTED | STOPPED | DISABLED }
AS { HTTP | TCP } (
     <protocol_specific_arguments>
    )
FOR { SOAP | TSQL | SERVICE_BROKER | DATABASE_MIRRORING } (
      <language_specific_arguments>


It should read:

CREATE ENDPOINT endPointName [ AUTHORIZATION login ]
STATE = { STARTED | STOPPED | DISABLED }
AS { HTTP | TCP } (
     <protocol_specific_arguments>
    )
FOR { SOAP | TSQL | SERVICE_BROKER | DATABASE_MIRRORING } (
      <language_specific_arguments>
    )



Page 506: Maintenance Tasks not listed in Maintenance Plan Wizard

On page 506, in table 14-1 it lists the following tasks as available in the Maintenance Plan Wizard:

Pointer
Execute T-SQL Statement Task
Maintenance Cleanup Task
Notify Operator Task

These tasks do not appear in the Maintenance Plan Wizard, they appear instead in the toolbox.

Page 562: fn_tracegettable referenced in place of fn_trace_gettable

On page 562, the fourth sentence of the BestPractices section includes an incorrect function name.

Change:

"After the trace is stopped, you can move the trace file to a central location and use fn_tracegettable() to load the trace into a table."

To:

"After the trace is stopped, you can move the trace file to a central location and use fn_trace_gettable() to load the trace into a table."

Page 586: Incorrect word used in place of deadlocks

On page 586, the first sentence of the last paragraph reads:

"Fortunately, SQL Server Profiler provides detailed information about deadlines via a deadlock trace."

It should read:

"Fortunately, SQL Server Profiler provides detailed information about deadlocks via a deadlock trace."

Page 595: blocking_process_id referenced in place of blocking_session_id

On page 595, the code sample reads:

SELECT session_id, sql_handle, plan_handle FROM sys.dm_exec_requests WHERE
  blocking_process_id > 0


It should read:

SELECT session_id, sql_handle, plan_handle FROM sys.dm_exec_requests WHERE
  blocking_session_id > 0



Page 624: Customer used in place of custom

On page 624, the first line of the page reads:

"Integration Services (SSIS) packages, SQL Server Agent jobs, customer error messages, or other objects configured on the server."

It should read:

"Integration Services (SSIS) packages, SQL Server Agent jobs, custom error messages, or other objects configured on the server."

Page 640: "mirror" should be "witness"

On page 640, the 4th bullet point at the bottom of the page includes an incorrect word.

Change:
"High Protection operating mode synchronously transfers data between principal and mirror, does not use a mirror, and requires manual failover."

To:
"High Protection operating mode synchronously transfers data between principal and mirror, does not use a witness, and requires manual failover."

Page 672: AdventureWorks.bck should be AdventureWorks.bak

On page 672, Step 14 includes an incorrect extension for the AdventureWorks backup file.

Change:
"Select the AdventureWorks.bck file in the default backup path and click OK."

To:
"Select the AdventureWorks.bak file in the default backup path and click OK."

Page 683: Default behavior for Standby mode misrepresented

On page 683, Answer C to Question 2 reads:

"This is the default behavior for the Standby mode. Using SSMS, clear the Disconnect Users In The Database When Restoring Backups check box of the log shipping configuration."

It should read:

"This is optional behavior for the Standby mode. Using SSMS, clear the Disconnect Users In The Database When Restoring Backups check box of the log shipping configuration."

Page 704: Queue Reader Agent application filename incorrect

On page 704, the second bullet point reads:

"Queue Reader Agent (replmerg.exe)"

It should read:

"Queue Reader Agent (qrdrsvc.exe)"

Page 710: Incorrect folder name to disable publishing

On page 710, the NOTE section reads:

"If you want to disable the publishing on a server, right-click the Publication folder and choose Disable Publishing And Distribution."

It should read:

"If you want to disable the publishing on a server, right-click the Replication folder and choose Disable Publishing And Distribution."

Page 734: Distribution Database located in an incorrect Agent row

On page 734, in the Distribution Database column the dbo_owner permission should be removed from the Distribution (Pull) row and added to the Distribution (Push) row.

Page 739: Incorrect computer address used in practice

On page 739, the first sentence in Step 6 reads:

"In the Replace With text box, type \\COMPUTERNAME\ReplData."

It should read:

"In the Replace With text box, type \\COMPUTERNAME\ReplicationPractice\ReplData."

Page 755: Delete tuid_ProductAudit before performing Practice 4

On page 755, Practice 4:

The 2nd UPDATE statement in step 7 will fail if the trigger tuid_ProductAudit created in Chapter 9, Lesson 3, Practice 1, still exists on the table Production.Product when the ReplTesting database is first created.

Before attempting to perform Practice 4 you need to delete the trigger tuid_ProductAudit from SubsTesting.Production.Product in order to successfully complete the practice.

Page 785: Extraneous space in code sample

On page 785, the first line of the code sample reads:

CREATE MESSAGE TYPE [http://broker. SolidQualityLearning.com/test/CheckClasses]


It should read:

CREATE MESSAGE TYPE [http://broker.SolidQualityLearning.com/test/CheckClasses]



Page 832: Search term missing from the second code sample

On page 832, the second code sample reads:

SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N'');


It should read:

SELECT ProductDescriptionID, Description FROM Production.ProductDescription
WHERE CONTAINS(Description, N'bike');



Page 851: Correct answers should also include C

On page 851, the correct answers for Question 3 is missing answer C. The explanation for answer C also needs to be changed.

Change:
"1. Correct Answers: B and D
A. Incorrect: You cannot enable the CLR on a database-by-database basis.
B. Correct: You must enable the CLR by using the Surface Area Configuration utility.
C. Incorrect: You must compile and load into SQL Server a class that conforms to the UDT specification. However, class creation is not limited exclusively to .NET languages.
D. Correct: You can use any CLR-compatible language, including C#, Visual Basic, and Cobol.NET to create a class for a CLR user-defined type."

To:
"1. Correct Answers: B, C, and D
A. Incorrect: You cannot enable the CLR on a database-by-database basis.
B. Correct: You must enable the CLR by using the Surface Area Configuration utility.
C. Correct: To create a CLR UDT, you must create a class by using one of the Microsoft .NET programming languages, such as C#, that conforms to the UDT specification.
D. Correct: You can use any CLR-compatible language, including C#, Visual Basic, and Cobol.NET to create a class for a CLR user-defined type."

Page 869: Explanation for Answer A is partially incorrect

On page 869, in the Lesson 3 section, Answer A for Question 1 has a partially incorrect explanation and needs to be changed.

Change:
"A. Incorrect: Indexes cannot be created within a trigger."

To:
"A. Incorrect: Indexes cannot be created within a trigger when it is used against the table or view that is the target of the triggering action."

Page 879: sys.dm_db_index_physical-stats referenced in place of sys.dm_db_index_physical_stats in the answers to Chapter 12, Case Scenario 1

On page 879, the answers to Case Scenario 1 read:

"1. SQL Server 2005 exposes index fragmentation levels through the sys.dm_db_index_physical-stats DMF. Your job should call this DMF to check for index fragmentation and determine whether it needs to perform any operations to defragment indexes.

2. Your job should check for external fragmentation by looking for values over 10 percent in the avg_fragmentation_in_percent column returned by the sys.dm_db_index_physical-stats DMF.

3. Your job should check for internal fragmentation by looking for values under 75 percent in the avg_page_space_used_in_percent column returned by the sys.dm_db_index_physical-stats DMF."

They should read:

"1. SQL Server 2005 exposes index fragmentation levels through the sys.dm_db_index_physical_stats DMF. Your job should call this DMF to check for index fragmentation and determine whether it needs to perform any operations to defragment indexes.

2. Your job should check for external fragmentation by looking for values over 10 percent in the avg_fragmentation_in_percent column returned by the sys.dm_db_index_physical_stats DMF.

3. Your job should check for internal fragmentation by looking for values under 75 percent in the avg_page_space_used_in_percent column returned by the sys.dm_db_index_physical_stats DMF."

Page 901: "revolver" should be "resolver"

On page 901, in the solution to Question 3 of Case Scenario 2 the word "revolver" should be replaced with "resolver".

Change:
"Programmers can use Microsoft COM-based conflict revolvers, create a .NET business component, or create a COM-based conflict revolver to resolve data conflicts if the same data is modified at the same time."

To:
"Programmers can use Microsoft COM-based conflict resolvers, create a .NET business component, or create a COM-based conflict resolver to resolve data conflicts if the same data is modified at the same time."

Page 902: The correct answer to Lesson 3 Question 1 is C

On page 902, the correct answer to Lesson 3 Question 1 incorrectly states B.

Change:
"Lesson 3
1. Correct Answer: B
A. Incorrect: The retention parameter specifies whether to keep messages until the conversation that processed them has been explicitly closed or whether to discard the messages as soon as they are processed.
B. Correct: Activation causes a stored procedure to be launched when a new messages arrives on a queue, as long as a stored procedure is not already running. This feature will launch additional procedures up to a configured maximum if the rate of inbound messages exceeds the rate at which they are being processed.
C. Incorrect: The MAX_QUEUE_READERS option limits the number of procedures that are activated but does not activate them to process messages.
D. Incorrect: The stored procedure that is specified for activation processes messages on the queue and does not launch new instances of itself."

To:
"Lesson 3
1. Correct Answer: C
A. Incorrect: The retention parameter specifies whether to keep messages until the conversation that processed them has been explicitly closed or whether to discard the messages as soon as they are processed.
B. Incorrect: The feature “activation” has nothing to do with the number of applications, only the way in which they are started.
C. Correct: The MAX_QUEUE_READERS option shows how many applications are available.
D. Incorrect: The stored procedure that is specified for activation processes messages on the queue and does not launch new instances of itself."

Microsoft Press is committed to providing informative and accurate books. All comments and corrections listed above are ready for inclusion in future printings of this book. If you have a later printing of this book, it may already contain most or all of the above corrections.


Additional query words: 0-7356-2271-X 978-0-7356-2271-5

Keywords: KB920926