Microsoft® SQL Server™ 2008 A Beginner’s Guide About the Author Dušan Petković is a professor in the Department of Computer Science at the Polytechnic in Rosenheim, Germany He is the author of SQL Server 7: A Beginner’s Guide, SQL Server 2000: A Beginner’s Guide, and Microsoft SQL Server 2005: A Beginner’s Guide, and is a frequent contributor to SQL Server Magazine About the Technical Editor Todd Meister has been using Microsoft technologies for over ten years He’s been a technical editor on over 40 titles ranging from SQL Server to the NET Framework In addition, he is an assistant director for computing services at Ball State University in Muncie, Indiana He lives with his wife, Kimberly, and their four children in central Indiana Contact Todd at tmeister@sycamoresolutions.com Copyright © 2008 by The McGraw-Hill Companies Click here for terms of use Microsoft® SQL Server™ 2008 A Beginner’s Guide Dušan Petkovic ´ New York Chicago San Francisco Lisbon London Madrid Mexico City Milan New Delhi San Juan Seoul Singapore Sydney Toronto Copyright © 2008 by The McGraw-Hill Companies All rights reserved Manufactured in the United States of America Except as permitted under the United States Copyright Act of 1976, no part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the publisher 0-07-154639-1 The material in this eBook also appears in the print version of this title: 0-07-154638-3 All trademarks are trademarks of their respective owners Rather than put a trademark symbol after every occurrence of a trademarked name, we use names in an editorial fashion only, and to the benefit of the trademark owner, with no intention of infringement of the trademark Where such designations appear in this book, they have been printed with initial caps McGraw-Hill eBooks are available at special quantity discounts to use as premiums and sales promotions, or for use in corporate training programs For more information, please contact George Hoare, Special Sales, at george_hoare@mcgraw-hill.com or (212) 9044069 TERMS OF USE This is a copyrighted work and The McGraw-Hill Companies, Inc (“McGraw-Hill”) and its licensors reserve all rights in and to the work Use of this work is subject to these terms Except as permitted under the Copyright Act of 1976 and the right to store and retrieve one copy of the work, you may not decompile, disassemble, reverse engineer, reproduce, modify, create derivative works based upon, transmit, distribute, disseminate, sell, publish or sublicense the work or any part of it without McGraw-Hill’s prior consent You may use the work for your own noncommercial and personal use; any other use of the work is strictly prohibited Your right to use the work may be terminated if you fail to comply with these terms THE WORK IS PROVIDED “AS IS.” McGRAW-HILL AND ITS LICENSORS MAKE NO GUARANTEES OR WARRANTIES AS TO THE ACCURACY, ADEQUACY OR COMPLETENESS OF OR RESULTS TO BE OBTAINED FROM USING THE WORK, INCLUDING ANY INFORMATION THAT CAN BE ACCESSED THROUGH THE WORK VIA HYPERLINK OR OTHERWISE, AND EXPRESSLY DISCLAIM ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE McGraw-Hill and its licensors not warrant or guarantee that the functions contained in the work will meet your requirements or that its operation will be uninterrupted or error free Neither McGraw-Hill nor its licensors shall be liable to you or anyone else for any inaccuracy, error or omission, regardless of cause, in the work or for any damages resulting therefrom McGraw-Hill has no responsibility for the content of any information accessed through the work Under no circumstances shall McGraw-Hill and/or its licensors be liable for any indirect, incidental, special, punitive, consequential or similar damages that result from the use of or inability to use the work, even if any of them has been advised of the possibility of such damages This limitation of liability shall apply to any claim or cause whatsoever whether such claim or cause arises in contract, tort or otherwise DOI: 10.1036/0071546383 Contents at a Glance Part I Basic Concepts and Installation Chapter Relational Database Systems—An Introduction Chapter Planning the Installation and Installing SQL Server 21 Chapter SQL Server Management Studio 39 Part II Transact-SQL Language Chapter SQL Components 67 Chapter Data Definition Language 91 Chapter Queries 125 Chapter Modification of a Table’s Contents 199 Chapter Stored Procedures and User-Defined Functions 215 Chapter System Catalog 243 Chapter 10 Indices 257 Chapter 11 Views 279 Chapter 12 Security System of Database Engine 301 Chapter 13 Concurrency Control 343 Chapter 14 Triggers 367 Part III SQL Server: System Administration Chapter 15 System Environment of Database Engine 389 Chapter 16 Managing Instances and Maintaining Databases 405 Chapter 17 Backup and Recovery 413 Chapter 18 Automating System Administration Tasks 447 v vi M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e Chapter 19 Data Replication 465 Chapter 20 Query Optimizer 485 Chapter 21 Performance Tuning 517 Part IV SQL Server and Business Intelligence Chapter 22 Business Intelligence—An Introduction 549 Chapter 23 Microsoft Analysis Services 565 Chapter 24 Business Intelligence and Transact-SQL 579 Chapter 25 Microsoft Reporting Services 605 Chapter 26 Optimizing Techniques for Business Intelligence 623 Part V Beyond Relational Data Chapter 27 Overview of XML 641 Chapter 28 SQL Server and XML 651 Chapter 29 Introduction to Spatial Data 673 Index 683 For more information about this title, click here Contents Acknowledgments xxi Introduction xxiii Part I Basic Concepts and Installation Chapter Relational Database Systems—An Introduction Database Systems: An Overview Variety of User Interfaces Physical Data Independence Logical Data Independence Query Optimization Data Integrity Concurrency Control Backup and Recovery Database Security Relational Database Systems Working with the Book’s Sample Database SQL: A Relational Database Language Database Design Normal Forms Entity-Relationship Model Syntax Conventions Conclusion Exercises Chapter 5 6 7 11 11 13 15 17 18 18 Planning the Installation and Installing SQL Server 21 Planning the Installation Purpose of the SQL Server System Hardware and Network Requirements SQL Server Editions Installation Recommendations 22 22 23 24 25 vii viii M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e Installing SQL Server Before Starting the Setup Program Starting the Setup Program and Installing Prerequisites Installing SQL Server Components Starting and Stopping an Instance of Database Engine Dedicated Connection to an Instance of Database Engine Conclusion Chapter Part II Chapter 27 28 28 28 37 38 38 SQL Server Management Studio 39 SQL Server Program Group and Books Online Introduction to SQL Server Management Studio Connecting to a Server Registered Servers Object Explorer Organizing and Navigating Management Studio’s Panes Using Management Studio with Database Engine Administering Database Servers Managing Databases Using Object Explorer Authoring Activities Using SQL Server Management Studio Conclusion Exercises 40 41 42 44 44 45 46 46 49 57 63 63 Transact-SQL Language SQL Components 67 SQL’s Basic Objects Literal Values Delimiters Comments Identifiers Reserved Keywords Data Types Numeric Data Types Character Data Types Temporal Data Types Miscellaneous Data Types DECIMAL with VARDECIMAL Storage Format 68 68 69 70 70 70 71 71 72 72 74 78 Contents Transact-SQL Functions Aggregate Functions Scalar Functions Scalar Operators Global Variables NULL Values Conclusion Exercises Chapter 79 79 80 87 87 88 89 89 Data Definition Language 91 Creating Database Objects Creation of a Database CREATE TABLE: A Basic Form CREATE TABLE and Declarative Integrity Constraints Referential Integrity Creating Other Database Objects Integrity Constraints and Domains Modifying Database Objects Altering a Database Altering a Table Removing Database Objects Conclusion Exercises Chapter 92 92 97 99 105 109 111 113 114 116 120 121 122 Queries 125 SELECT Statement: A Basic Form and the WHERE Clause WHERE Clause Subqueries Subqueries and Comparison Operators Subqueries and the IN Operator Subqueries and ANY and ALL Operators SELECT Statement: Other Clauses and Functions GROUP BY Clause Aggregate Functions HAVING Clause ORDER BY Clause SELECT Statement and IDENTITY Property Set Operators 126 127 142 143 144 145 147 147 149 155 156 158 160 ix instances of Database Engine DAC, 38 running, 26–27 starting and stopping, 37 default, 26, 31 managing, 405–411 multiple, 27 named, 26, 31 INSTEAD OF triggers, 369, 375–376 INTEGER data type, 71 integrity constraints adding or removing, 118–119 declarative, 99–105 domains and, 111–113 enabling or disabling, 119 overview, referential, 105–109 AFTER triggers, 374–375 Intellisense tool, 61 intent locks, 353–354 interfaces general, 246–251 proprietary, 252–255 internal group, 544 internal numeric identifier (ID) function, 84 Interrupts/sec counter, 528 INTERSECT set operator, 163–164 IsIndexable property, 268, 295 IsIndexed property, 268 ISNULL(expr, value) function, 85 ISNUMERIC(expression) function, 85 isolation levels, 359–362 isolation property, 347 IsUpdatedColumn( ) method, 382 J job column, 9–10 Job Properties dialog box, 453, 456 jobs, 450–456 join columns, 272 join hints, 510–513 Index join operator Cartesian product, 177 indices and, 272 natural joins, 171–176 outer joins, 177–180 overview, 169–170 self-joins, 181–182 semi-joins, 182 theta joins, 180–181 two syntax forms to implement joins, 170–171 joins, 185–186, 492–494 K key-range locks, 361 keys, encryption, 304–308 L –L option, 401 :List command, 402 large objects (LOBs), 75–76 LARGE_VALUE_TYPES_OUT_OF_ROW option, 75 last triggers, 376–378 last value, 377 latches, 353 latitude, 674 layers, hierarchical encryption, 304–305 Layout tab, 616 Leave the database in read-only mode option, 432 Leave the database non-operational, and not roll back uncommitted transactions option, 432 Leave the database ready to use by rolling back uncommitted transactions options, 432 LEFT OUTER JOIN operator, 170, 178 LEFT(z, length) function, 83 LEN(z) function, 83 levels, defined, 572 LIKE operator, 139–142 linked dimensions, 568 literal values, 68–69 LOADHISTORY option, 428 LOBs (large objects), 75–76 local temporary procedures, 225 695 696 M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e local temporary tables, 168 local variables, 219 location column, lock escalation, 355–356 lock granularity, 354–355 lock modes, 352–354 LOCK_TIMEOUT option, 357 locking, 351–359 Log File Viewer dialog box, 455, 458 log files, 114–115 Log Reader Agent, 471 log restoration, 428–433 log sequence numbers (LSNs), 351 log shipping, 443–444 LOG10(n) function, 81 logical data independence, 5–6 logical I/O, 524 Login dialog box, 311 login_test login, 380 logins, 303, 311, 320 LOG(n) function, 81 longitude, 674 LOOP hint, 512 lost updates, 359 LOWER(z1) function, 83 LSNs (log sequence numbers), 351 LTRIM(z) function, 83 M main memory requirements, 23 managed targets, 406 Management Data Warehouse (MDW), 542–543 Management Studio adding database users, 317 application roles, 324 assigning login to fixed server role, 320 assigning user to fixed database role, 322 backups, 421–424 books online, 40–41 connecting to server, 42–44 graphical execution plans and, 499–500 implementing authentication mode, 304 managing logins with, 311 manual recovery, 431–433 Object Explorer, 44 organizing and navigating panes in, 45–46 overview, 39–40 permissions, 333–334 Registered Servers, 44 SQL Server program group, 40–41 user-defined roles, 325–326 using with Database Engine administering database servers, 46–49 authoring activities, 57–63 managing databases, 49–57 overview, 46 managing instances, 409–411 manual recovery overview, 426–428 recovering to mark, 433–434 RESTORE statements, 427–428 restoring system databases, 434–435 using Management Studio, 431–433 using Transact-SQL statements, 428–431 master databases overview, 390 restoring, 434–435 system tables of, 244 matrix reports, 612–613, 618 max degree of parallelism option, 398 MAX function, 80, 150–152 MAX specifier, 75 MDBMS (multidimensional database systems), 559 MDW (Management Data Warehouse), 542–543 measures, 556 Measures dimension, 572 MEDIADESCRIPTION option, 420 MEDIANAME option, 420 MEDIAPASSWORD option, 420 members, 325, 558, 572 memory monitoring, 529–531 performance and, 522, 525–526 Merge Agent, 473 MERGE hint, 512 merge join, 493 merge replication, 473–474 MERGE statement, 211–213 metadata functions, 86 Microsoft Analysis Services BI Development Studio, 566–571 cubes, 571–577 Microsoft Cluster Service, 442 Microsoft Distributed Transaction Coordinator (DTC), 348, 467 Microsoft Reporting Services accessing and delivering reports, 619–621 components of, 606–608 creating reports overview, 608–609 parameterized, 617–618 with Report Server Project Wizard, 610–616 managing reports, 618–619 processing reports, 618–619 Microsoft web site, 28 Microsoft.SQLServer.Server namespace, 382 MIN function, 80, 150–152 Mining Structures folder, 568 minus sign (-), 46 MIRROR TO option, 419, 442 mirroring, 440–443 Mixed authentication mode, 303 mixed extents, 393 Mixed mode, 27 Mixed Mode radio button, 32 model databases, 94, 390–391 models, recovery, 435–438 modes, authentication, 27, 303–304 MODIFY FILE clause, 115 modify( ) method, 670 modify_empno procedure, 226 modifying column properties, 117 database objects, 113–120 filegroup properties, 115 structure of indexed views, 295–296 MOLAP (multidimensional OLAP), 561–562 Index MONEY data type, 71 monitoring performance CPU, 528–529 disk system, 531–532 memory, 529–531 network interface, 532–533 Performance Monitor overview, 526–528 MOVE TO option, 270 msdb database, 392, 435 msmerge_contents system table, 474 MSSQLSERVER service, 448 multidimensional database systems (MDBMS), 559 multidimensional OLAP (MOLAP), 561–562 multiple instances, 27 multiple publisher replication model, 477–478 multiple rows, 203–204 multiple subscribers, 477–478 multiple-threads-per-partition strategy, 633 multivalued attributes, 15 multivalued dependencies, 12–13 N named instances, 26, 31 Named Pipes network protocol, 24 namespaces, 647 native mode, 615 native storage, 653–654 natural joins, 171–176 NCHAR[(n)] data type, 72 NCHAR(i) function, 83 nested loops, 492–493 Nested Loops operator, 501 net command, 37 net start mssqlserver service, 37 network interface, 532–533 network protocols, 23–24 network requirements, 23–24 New Database dialog box, 49–50 New Job dialog box, 451 New Job Schedule dialog box, 454 New Job Step dialog box, 452 New Operator Properties dialog box, 455 697 698 M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e New Project dialog box, 567, 608–609 New Publication Wizard, 479 New Query button, 58 New Server Group dialog box, 47 New Server Registration dialog box, 46–47 New Subscription Wizard, 480 New View option, 284 NEWID function, 76–77, 85 NEWSEQUENTIALID function, 76–77, 85 NO ACTION option, 109 NO_CHECKSUM option, 430 NO_TRUNCATE option, 421 nodes( ) method, 670 NOEXPAND hint, 509–510 NOFORMAT option, 420 NOINIT option, 420 NOLOCK locking hint, 356 nonclustered indices, 261–262, 490 NONCLUSTERED option, 101–102, 263 none value, 377 nonrecursive queries, 189–190 nonrepeatable reads, 359 nonstandard analytic functions, 597–603 NORECOVERY option, 421, 429 normal forms, 13–15 normalization, 12 NOSKIP option, 420 NOT BETWEEN operator, 135–136 NOT FOR REPLICATION option, 104 NOT IN predicate, 519 NOT operators, 133 NOUNLOAD option, 420 NTB01112 instance, 478 NTEXT data type, 76 NTILE function, 600–601 NULL values, 88–89, 137–138 NULLIF(expr1,expr2) function, 85 num_reads column, 533 num_writes column, 533 numeric data type, 71 numeric functions, 81–82 NUMERIC_ROUNDABORT option, 294 NUMERIC(p,[s]) data type, 71 NVARCHAR data type, 75 NVARCHAR[(n)] data type, 72 O –o output_file option, 401 Object Explorer administering multiple servers with, 48–49 creating views, 284 managing databases with, 49–57 Object Explorer Details tab, 45 Object Explorer pane, 44 OBJECT plan guide, 514 object_id column, 268 OBJECT_ID(obj_name) function, 86 OBJECT_NAME(obj_id) function, 86 OBJECTPROPERTY function, 254, 268, 377 objectproperty property function, 295 OBJECTPROPERTY(obj_id,property) function, 86 OGC (Open Geospatial Consortium), 676 OLAP (online analytical processing) systems, 561 OLAP query functions, 593–597 OLTP (online transaction processing), 211, 550–552, 580–581 ON clause, 631 ON DELETE option, 108–109 ON UPDATE option, 108–109 on-demand reports, 619–620 online analytical processing (OLAP) systems, 561 ONLINE option, 265 online transaction processing (OLTP), 211, 550–552, 580–581 Open Geospatial Consortium (OGC), 676 OpenXML, 661 operational databases, 551 operational tasks, 23 operators, 144–145, 454–455 optimistic concurrency, 345 optimization hints, 507–514 OPTIMIZE FOR hint, 513–514 optimizer See query optimizer option_list, 310, 419 Options page, 52 OR operator, 130, 134, 163 ORDER BY clause, 156–158, 585 ordering, 585–587 ORDINAL_POSITION column, 251 OUT option, 399 outer joins, 177–180 outer queries, 142 OUTPUT option, 210–211, 224 OVER clause, 581 ownership, schema, 312 P –P password option, 401 p_table_option system procedure, 79 PAD_INDEX option, 264 page chains, 260 Page Faults/sec counter, 530 page headers, 394 pagefile.sys., 525 page-level locking, 352, 355 Pages/sec counter, 530 PAGLOCK locking hint, 356 panes, 45–46 parameterized reports, 617–618 parameters, 224, 237–238, 659–660 parent tables, 104 parity, 441 parsing, 487 PARTIAL option, 430 PARTITION BY clause, 583 partition functions, 625, 628 partition goals, 625–626 partition keys, 624, 626 partition schemes, 625, 630 Partitioned attribute, 634 partitionedID column, 632, 634 partitioning See data partitioning Partitions tab, 574 PATH mode, 666–667 PATINDEX(%p%,expr) function, 83 PDS (Physical Design Structures), 539 peer-to-peer transactional replication, 474–476 PERCENT option, 598 Index performance factors that affect, 518–526 monitoring, 526–533 tools Database Engine Tuning Advisor, 535–542 overview, 533–534 in SQL Server 2008, 542–545 SQL Server Profiler, 534 Performance Data Collector, 542–543 Performance gain reaches % option, 575 Performance Monitor CPU, 528–529 disk system, 531–532 memory, 529–531 network interface, 532–533 overview, 526–528 permissions application roles, 322–323 DENY statement, 331–332 fixed server roles, 319 GRANT statement, 327–331 managing in Management Studio, 333–334 public role, 321 REVOKE statement, 332–333 Permissions page Database Properties dialog box, 52 Server Properties dialog box, 48 PERSISTED option, 275 persistent computed columns, 274–275 personal subscriptions, 620–621 pessimistic concurrency, 344 phantoms, 359 physical data independence, physical database design, 519–521 Physical Design Structures (PDS), 539 physical I/O, 524 PI( ) function, 81 PIVOT operator, 601–603 plan guides, 514 plan handles, 506 plan_guide_id column, 514 planar models, 675 policies, 406 699 700 M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e POWER(x,y) function, 81 Preview tab, 616–617 PRIMARY KEY clause, 102–103 primary keys, 10 PRIMARY option, 93 principal servers, 442 principals, 312–314, 326–327 PRINT statement, 218 priority-based resolution, 474 private dimensions, 568 proc_name stored procedure, 224 procedural extensions, 216–222 procedures, system, 252–253, 319, 324–325 processing cubes, 573–576 reports, 618–619 Processor Queue Length, 528 production systems, 22 program group, SQL Server, 40–41 project table, 9–10 project_dept table, 581–582 project_name column, 9–10 project_no column, 9–10 property functions, 245, 254–255 property groups, database, 50–52 proprietary interfaces, 252–255 protocols, network, 23–24 public key certificates, 306–308 public role, 321 publications, 470–471 publishers, 468–469 pull subscriptions, 471 push subscriptions, 470–471 Q :QUIT command, 402 QBE (query by example), 611 queries See also subqueries ad hoc, 494 analysis, 488 anchor, 191 catalog views, 247–249 covered, 264, 272 inner, 142 join operator Cartesian product, 177 natural joins, 171–176 outer joins, 177–180 overview, 169–170 self-joins, 181–182 semi-joins, 182 theta joins, 180–181 two syntax forms to implement joins, 170–171 nonrecursive, 189–190 outer, 142 performance benefits when referencing indexed views, 297–298 processing, 486–487 recursive, 190–195 SELECT statement aggregate functions, 149–155 CASE expressions, 164–166 COMPUTE clause, 166–168 GROUP BY clause, 147–149 HAVING clause, 155–156 IDENTITY property, 158–160 ORDER BY clause, 156–158 overview, 126–127 set operators, 160–164 WHERE clause, 127–142 table expressions CTEs, 188–195 defined, 186–187 derived tables, 187–188 temporary tables, 168–169 query by example (QBE), 611 query compilation, 487 Query Editor, 58–62 query execution, 487 query hints, 513–514 query( ) method, 670 query optimization, query optimizer defined, function of, 487–494 optimization hints, 507–514 performance and, 521 phases of processing, 486–487 tools for editing DMVs, 504–507 execution plans, 500–504 Management Studio, 499–500 overview, 494 SET statement, 495–498 query_text column, 514 quotation marks, 68–69 quoted identifiers, 69 QUOTED_IDENTIFIER option, 70, 294, 296 QUOTENAME(char_string) function, 83 R :r filename command, 402 RADIANS(n) function, 81 RAID (redundant array of inexpensive disks) technology, 440–441 RAISEERROR statement, 220, 462 RAND function, 81 RANGE LEFT option, 628 range partitioning, 625 RANGE RIGHT option, 628 RANK function, 593–595 ranking functions, 593–596 RAW mode, 663 raw storage, 653 RDL (Report Definition Language), 606 read ahead, 524–525 Read Ahead Manager, 524 READ COMMITTED isolation level, 360–361 Read( ) function, 77 READ UNCOMMITTED isolation level, 360, 362 READPAST locking hint, 356 Ready to Install page, 35 REAL data type, 71 real-time monitoring, 533 REBUILD option, 269–270 rebuilding indices, 269 Recommendations tab, 541 Index RECONFIGURE statement, 228 recovery, database automatic, 426 manual, 426–435 models, 435–438 overview, RECOVERY option, 429, 437 recursive member, 191 recursive queries, 190–195 redo activity, 351 redundant array of inexpensive disks (RAID) technology, 440–441 referenced tables, 104 REFERENCES clause, 104, 328 referencing tables, 104 referential integrity constraints, 105–109 Register Server dialog box, 49 Registered Servers pane, 44 registering servers, 46–47 Registration Information page, 29 relational data, 662–669 relational databases, 7–11, 111, 652–653 relational OLAP (ROLAP), 561 relationships, 16, 57 Release Notes, 28 removing database objects, 120–121 indices, 270 views, 284–285 renaming indices, 270 servers, 49 tables, 54 renderers, 607–608 REORGANIZE option, 269–270 reorganizing indices, 269–270 REPEATABLE READ isolation level, 361 REPLACE option, 430 REPLACE(str1,str2,str3) function, 83 REPLICATE(z,i) function, 84 replication, data See data replication Report Builder, 609 701 702 M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e Report Catalog, 608 Report Definition Language (RDL), 606 Report Designer, 609 Report layout instruction set, 606 Report Manager, 606–607 Report mode, 527 report processor, 607–608 Report Server, 607–608 Report Server Project Wizard, 610–616 report snapshots, 618 Reporting Services See Microsoft Reporting Services Reporting Services Configuration page, 34–35 reports accessing and delivering, 619–621 creating overview, 608–609 parameterized, 617–618 with Report Server Project Wizard, 610–616 managing, 618–619 processing, 618–619 reportserver database, 608 reportservertempdb database, 608 request handler, 607–608 request_mode column, 357 request_status column, 357 reserved keywords, 70 resource databases, 390 Resource Governor, 543–545 resource_database_id column, 357 resource_type column, 357 Restore Database dialog box, 431–432 RESTORE DATABASE statement, 428, 430 RESTORE FILELISTONLY statement, 428 RESTORE HEADERONLY statement, 427–428 RESTORE LABELONLY statement, 427 RESTORE LOG statement, 434 RESTORE VERIFYONLY statement, 428 Restrict Access option, 52 restricting access to data, 338–339 retrieving stored XML documents, 661–662 views, 286–287 RETURN statement, 220 RETURNS clause, 233–234, 236 reverse engineering, 55 REVERSE(z) function, 84 REVOKE statement, 332–333 RIGHT OUTER JOIN operator, 170, 178 RIGHT(z,length) function, 84 ROLAP (relational OLAP), 561 roles, 303, 318–326 ROLLBACK statement, 414 ROLLBACK TRANSACTION statement, 348, 350 ROLLBACK WORK statement, 348 ROLLUP operator, 589–590 ROOT directive, 668–669 root directory, storing, 26 ROUND(n, p,[t]) function, 82 routines, 216 row offset tables, 395 row versioning, 362–364 ROW_NUMBER function, 594–595 ROWCOUNT_BIG function, 82 ROWGUIDCOL keyword, 77 ROWGUIDCOL property, 473–474 row-level locking, 354–355, 521 ROWLOCK locking hint, 356 row-overflow data, 396–398 rows, inserting, 200–204 ROWVERSION column, 77–78, 200 RTRIM(z) function, 84 Run Now dialog box, 408 S –S server_name[\instance_name] option, 401 sa login, 320 sample database, 8–10 SAVE TRANSACTION statement, 348–349 savepoints, 348 scalar functions, 80–86 scalar operators, 87–88 schema valid documents, 658 schema_name, 224, 369 SCHEMABINDING clause, 234, 281, 293 SCHEMABINDING option, 295–296 schemas cdc, 336 default database, 312, 318 defined, 5, 110 information, 245, 250–251 security system of Database Engine, 312–315 snowflake, 557 star, 555–556 sys, 246, 318 search arguments, 487 Search button, 40–41 searched CASE expression, 165 second normal form (2NF), 13–14 securables, 314, 327–328, 330 security, database, Security page, 48 seeds, 191 SELECT permission, 328–329 Select Plan Properties wizard page, 410 Select Report Options wizard page, 410 SELECT statement aggregate functions, 149–155 CASE expressions, 164–166 column names, 174 COMPUTE clause, 166–168 GROUP BY clause, 147–149 HAVING clause, 155–156 IDENTITY property, 158–160 ORDER BY clause, 156–158 overview, 126–127 set operators, 160–164 table expressions, 188 tables, 175 using to see content of xmltab table, 656 WHERE clause Boolean operators, 130–134 LIKE operator, 139–142 NULL values and, 137–138 IN operator, 134–135 BETWEEN operator, 135–137 overview, 127–130 Select the Data Source page, 610 Select the Report Type page, 612–613 Index select_statement, 281 selectivity condition, 271 expression, 488 self-contained subqueries, 143 self-joins, 181–182 semi-joins, 182 SERIALIZABLE isolation level, 361–362 Server Configuration page, 32 Server Name field, 42 Server Profiler, 534 Server Properties dialog box, 48–49 Server Role Properties dialog box, 320 Server Type field, 42 server-level triggers, 379–380 SERVERPROPERTY(propertyname) function, 85 servers, 42–49 service master keys, 304 sessionproperty property function, 296 Set Aggregation Options page, 575 SET DATEFORMAT statement, 73 SET DEFAULT option, 109 SET NULL option, 109 set operators, 160–164 SET statement, 89, 495–497 Setup program, 28 SGML (Standard General Markup Language), 643 shared dimensions, 568 shared locks, 352–353 shared memory network protocol, 24 Sharepoint integrated mode, 615 Show details button, 28–29 SHOWPLAN_ALL option, 495 SHOWPLAN_TEXT option, 495 SHOWPLAN_XML option, 497 SIGN(n) function, 82 simple CASE expression, 165 simple recovery model, 437 single indices, 263 single quotation marks ('), 69 single rows, inserting, 200–203 single-byte characters, 72 single-thread-per-partition strategy, 633 703 704 M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e SIN(n) function, 82 SKIP option, 420 SMALLDATETIME data type, 73 SMALLINT data type, 71 SMALLMONEY data type, 71 Snapshot Agent, 472 snapshot replication, 472–473 snowflake schemas, 557 soft page faults, 526, 530 Solution Explorer, 62–63 Solution Explorer pane, 569 SORT_IN_TEMPDB option, 264–265 SOUNDEX(a) function, 84 source tables, 336–337 sp_addmessage stored procedure, 462 sp_addpublication system procedure, 475 sp_addrolemember system procedure, 325 sp_addumpdevice system procedure, 453 sp_configure_peerconflictdetection system procedure, 475 sp_control_plan_guide system procedure, 514 sp_create_plan_guide system procedure, 514 sp_createstats system procedure, 490 sp_db_vardecimal_storage_format system procedure, 79 sp_dboption system procedure, 116 sp_defaultdb system procedure, 95 sp_depends system procedure, 252–253 sp_detach_db system procedure, 96 sp_droprolemember system procedure, 325 sp_help system procedure, 252 sp_helpindex system procedure, 268 sp_helprole system procedure, 325 sp_helptext system procedure, 285 sp_lock system procedure, 357 sp_monitor system procedure, 529, 532 sp_rename stored procedure, 114 sp_rename system procedure, 119, 270 sp_setapprole system procedure, 323 sp_settriggerorder system stored procedure, 376 sp_spaceused system procedure, 296 sp_tableoption system procedure, 75–76 sp_xml_preparedocument system procedure, 660–661 sp_xml_removedocument system procedure, 661 SPACE(length) function, 84 sparse dimensions, 560 spatial data, 673–681 spheroids, 674 spinlocks, 353 SQL (Structured Query Language), 11 SQL options, 116 SQL plan guide, 514 SQL Server 2008 components automation, 449 comments, 70 data types, 71–79 delimiters, 69–70 identifiers, 70 installing, 28–36 literal values, 68–69 NULL values, 88–89 reserved keywords, 70 scalar operators, 87–88 Transact-SQL functions, 79–86 data partitioning and, 632–634 editions, 24–25 encryption enhancements, 308–309 Performance Data Collector, 542–543 program group, 40–41 Resource Governor, 543–545 security subsystem, 303 storing XML documents in, 653–661 SQL Server Agent error log, 458 SQL Server Authentication, 43 SQL Server Books Online (BOL), 40–41 SQL Server Installation Center, 28–29 SQL Server Management Studio See Management Studio SQL Server Profiler, 534 sql_handle column, 529 SQL_VARIANT data type, 77 sqlcmd utility, 38, 400–402 SQLCommand class, 382 SQLConnection class, 382 SQL/OLAP, 580–581 SqlPipe class, 384 sqlservr application, 37 SQRT(n) function, 82 SQUARE(n) function, 82 Standard Edition of SQL Server, 25 Standard General Markup Language (SGML), 643 STANDBY option, 421, 429–430 standby servers, 439–440 star schema query optimization, 634–636 star schemas, 555–556 State options, 52, 116 static backup, 415 statistical aggregate functions, 155, 596–597 statistics, 486, 489–491 STATISTICS IO option, 498 STATISTICS PROFILE option, 498 STATISTICS TIME option, 498 STATISTICS XML option, 497 STATISTICS_NORECOMPUTE option, 265 STATS option, 428 status bar, 59–60 STContains( ) method, 679 STDEV aggregate function, 155, 596 STDEVP aggregate function, 155, 596 Stepped option, 614 STGeomFromText( ) method, 676 STIntersects( ) method, 680 STLength( ) method, 680 STLineFromText( ) method, 677 STOPAT option, 430 STOPATMARK option, 430, 434 STOPBEFOREMARK option, 430, 434 stored procedures CLR and, 228–233 creation and execution of, 223–228 defined, 110 overview, 222–223 procedural extensions, 216–222 storing root directory, 26 XML documents in relational databases, 652–653 retrieving, 661–662 in SQL Server, 653–661 STPointFromText( ) method, 677 STPolyFromText( ) method, 677 Index STR(f,[len [,d]]) function, 84 string constants, 68 string functions, 83–84 Structured Query Language (SQL), 11 STUFF(z1,a,length,z2) function, 84 subqueries, 142–147, 183–186 subscribers, 468–469 subscriptions data replication, 470 e-mail, 621 report, 620–621 SUBSTRING(z,a,length) function, 84 SUM aggregate function, 152–153 SUM function, 80 symmetric key encryption, 305–306 synonyms, defined, 110 syntax highlighting, 60 sys schema, 246, 318 sys.all_objects catalog view, 246–247 sys.database_permissions catalog view, 333 sys.database_principals catalog view, 248, 308 sys.databases catalog view, 438 sys.dm_db_index_physical_stats DMV, 266–267 sys.dm_db_index_usage_stats DMV, 268 sys.dm_db_missing_index_details DMV, 268 sys.dm_exec_connections view, 533 sys.dm_exec_procedure_stats DMV, 506–507 sys.dm_exec_query_optimizer_info DMV, 504–505 sys.dm_exec_query_plan DMV, 505–506 sys.dm_exec_query_stats DMV, 506 sys.dm_exec_requests view, 529 sys.dm_exec_sessions DMV, 296 sys.dm_exec_sessions view, 380 sys.dm_exec_sql_text DMV, 506 sys.dm_exec_text_query_plan DMV, 506 sys.dm_os_memory_clerks view, 530 sys.dm_os_memory_objects view, 531 sys.dm_os_wait_stats view, 532 sys.dm_tran_locks dynamic management view, 357 sys.index_columns catalog view, 267 sys.indexes catalog view, 267 sys.objects catalog view, 228, 246–247, 285, 391 sys.plan_guides catalog view, 514 705 706 M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e sys.procedures catalog view, 228 sys.sp_cdc_enable_db_change_data_capture stored procedure, 336 sys.sp_cdc_enable_table_change_data_capture stored procedure, 336 sys.sp_estimated_rowsize_reduction_for_vardecimal view, 79 sys.spatial indexes view, 679 sys.spatial_index_tessellations view, 679 sys.stats view, 491 sys.stats_columns view, 491 sys.sysprocesses catalog view, 529 sys.system_objects catalog view, 246–247 system administration tasks, automating alerts, 457–463 jobs, 450–456 operators, 454–455 SQL Server Agent, 449 system administrators, 320 system base tables, 244 system catalog general interfaces, 246–251 overview, 244–246 proprietary interfaces, 252–255 System Configuration Check page, 28–30 system databases master overview, 390 restoring, 434–435 system tables of, 244 model, 94, 390–391 msdb, 392, 435 overview, 92 restoring, 435 tempdb, 362–363, 370, 391–392 system errors, 457, 459–463 system functions, 84–86, 245, 253–254, 306 system procedures, 252–253, 319, 324–325 System R project, 11 system resources disk I/O, 523–525 memory, 525–526 overview, 522–526 read ahead, 524–525 SYSTEM_USER function, 85 System.Data.SqlClient namespace, 382 sys.xml_schema_attributes view, 660 sys.xml_schema_components view, 660 sys.xml_schema_elements view, 660 T –T option, 400 –t seconds option, 401 tab_name table, 200 tabbed document option, 45 Table access report, 541 TABLE data type, 236–237 table expressions common (CTEs), 188–195 defined, 186–187 derived tables, 187–188 table hints, 508–510 TABLE option, 355 Table Properties dialog box, 54–55, 333, 335 table scan/nlmethod, 258 table value constructors, 205 TABLE_CATALOG column, 250–251 table_name, 369 TABLE_NAME column, 250–251 TABLE_SCHEMA column, 250–251 TABLE_TYPE column, 250 table-level constraints, 100 table-level locking, 355 tables altering, 116–120 clustered, 260–261 collocating, 631–632 DELETE statement, 208–210 denormalized dimension, 557 derived, 187–188 dimension, 555–556 fact, 555–556 INSERT statement, 200–205 inserted, 370 joining more than two, 175–176 managing without Transact-SQL, 53–57 MERGE statement, 211–213 OUTPUT clause, 210–211 overview, parent, 104 partitioning, 625–632 referencing, 104 relationships, 57 renaming, 54 row offset, 395 source, 336–337 system base, 244 temporary, 98, 168–169 UPDATE statement, 205–207 virtual, 109 Tables and Columns dialog box, 57 table-valued functions, 195, 238–240 table-valued parameters, 237–238 TABLOCK (TABLOCKX) locking hint, 356 tabular reports, 612–613 tag names, 645 TAKE OWNERSHIP permission, 328 TAN(n) function, 82 tape backup devices, 418 target sets, 406 TCP/IP network protocol, 24 TDE (Transparent Data Encryption), 309 tempdb database, 362–363, 370, 391–392 TEMPLATE plan guide, 514 temporal data types, 72–74, 130 temporary tables, 98, 168–169 TEXT data type, 76 TEXT_IN_ROW option, 76 text/image data types, 76 textual execution plans, 495–496 theta joins, 180–181 third normal form (3NF), 14–15 TIME data type, 73 TIME option, 220 TIMEOUT option, 220 TIMESTAMP data type, 77–78, 200 TINYINT data type, 71 Index toolbar, 59 TOP clause, 597–600 ToString( ) method, 680 trace flag 2440, 633 tracking changes, 302, 334–338 TRANSACTION ISOLATION LEVEL option, 362 transaction log backup, 415–417 transaction sequence number (XSN), 362–363 transaction_name, 347 transactional replication, 471–472 transaction-related DMFs, 250 transaction-related DMVs, 250 transactions, 345–351 Transact-SQL functions, 79–86 Transact-SQL language adding database users, 316–317 application roles, 322–323 asymmetric keys, 306 authorization, 326–333 BI and GROUP BY clause extensions, 587–593 nonstandard analytic functions, 597–603 OLAP query functions, 593–597 SQL/OLAP, 580–581 window construct, 581–587 certificates, 307–308 creating databases without, 49–52 Extensible Key Management, 309 indices and, 262–270 managing tables without, 53–57 modifying databases without, 52–53 overview, 11 schemas, 313–315 setting up system security, 309–311 symmetric keys, 306 user-defined database roles, 324 views, 339 Transact-SQL statements backups, 418–421 manual recovery, 428–431 transactions and, 347–350 Transparent Data Encryption (TDE), 309 tree hierarchy, 44 707 708 M i c r o s o f t S Q L S e r v e r 0 : A B e g i n n e r ’s G u i d e triggers CLR and, 380–385 DDL, 378–380 defined, 110 DML AFTER, 371–375 creating, 368–369 first and last, 376–378 INSTEAD OF, 375–376 modifying structure, 369–370 overview, 368 replication, 468 tracking changes with, 335 using deleted and inserted tables, 370 trivial functional dependencies, 12 trivial plan optimization, 487 TRUNCATE TABLE statement, 209–210 trusted connections, 303, 400 TRY statement, 221–222, 346 TRY/CATCH blocks, 462 Tuning Options tab, 539 two-phase commit method, 467 TYPE directive, 667–668 TYPEPROPERTY function, 255 U –U login_id option, 401 UDFs See user-defined functions unary arithmetic operators, 87 undo activity, 351 Unicode characters, 72 UNICODE function, 84 uniform extents, 393 uniform resource identifiers (URIs), 647 UNION set operator, 160–163 UNIQUE option, 101–102, 263 UNIQUEIDENTIFIER data type, 76–77, 473–474 UNLOAD option, 420 UNPIVOT operator, 601–603 update locks, 352–353 UPDATE permission, 328–329 UPDATE statement, 205–207, 289–291, 376 UPDATE_RULE column, 251 updates, concurrency, 335 UPDLOCK locking hint, 356 UPPER(z) function, 84 URIs (uniform resource identifiers), 647 USE statement, 95 user accounts, 303, 316–317 user interfaces, user keys, 305–308 user_created column, 491 USER_ID([user_name]) function, 85 USER_NAME([id]) function, 85 user-defined aggregate functions, 155 user-defined database roles, 324–326 user-defined errors, 461–463 user-defined functions (UDFs) CLR and, 240–241 creation and execution of, 233–240 procedural extensions, 216–222 users, 312, 322 utilities bcp, 399–400 sqlcmd, 38, 400–402 V validation commands, 403–404 VALUE clause, 203 value( ) method, 670 VAR aggregate function, 155, 596 VARBINARY data type, 74–75 VARCHAR data type, 75 VARCHAR[(n)] data type, 72 VARDECIMAL format, 78–79 variables global, 87–88 local, 219 typed XML, 659–660 VARP aggregate function, 155, 596 vertical filters, 470 VIA (Virtual Interface Adapter) network protocol, 24 VIEW DEFINITION permission, 328–330 VIEW SERVER STATE permission, 380 VIEW_METADATA option, 281 view_name, 281, 369 views catalog encryption, 308 overview, 244, 246 permissions, 333 querying, 247–249 XML Schema, 660 compatibility, 247 data security, 338–339 data source, 569–571 DDL statements and, 280–286 defined, 109 deriving from existing, 283–284 DML statements and, 286–293 dynamic management (DMVs) overview, 249–250 and query optimizer, 504–507 use of, 244 encryption catalog, 308 indexed, 293–298 virtual computed columns, 274 Virtual Interface Adapter (VIA) network protocol, 24 virtual tables, 109 See also views W wait_type column, 532 WAITFOR statement, 220 waiting_tasks_count column, 532 warehouses, data, 552–557 web browsers, 642 web server, 642 web site, Microsoft, 28 Well-Known Text (WKT) representation, 676–677 WHERE clause Boolean operators, 130–134 indices in, 271–272 LIKE operator, 139–142 NULL values and, 137–138 IN operator, 134–135 BETWEEN operator, 135–137 Index overview, 127–142 UPDATE statement, 205 WHILE statement, 218–219, 349 wildcard characters, 139 window construct, 581–587, 603 Windows application log, 459 Windows Authentication mode, 27, 43, 303 Windows authentication mode radio button, 32 WINDOWS clause, 310 Windows Event Viewer, 459 WITH CHECK option, 119 WITH CHECK OPTION option, 287–290 WITH ENCRYPTION option, 234, 281 WITH GRANT OPTION clause, 330–331 WITH MARK clause, 434 WITH NOCHECK option, 119 WITH PERMISSION SET clause, 232 WITH RECOMPILE option, 224 WITH SCHEMABINDING clause, 234 WITH statement, 189 WITH TIES option, 599 with_check_option column, 285 WKT (Well-Known Text) representation, 676–677 Workgroup Edition of SQL Server, 25 Workload analysis report, 541 works_on table, 9–10 Write( ) function, 77 X XLOCK locking hint, 356 XML See Extensible Markup Language XML data type, 654–660 XML execution plans, 496–497 XML Schema Definition language (XSD), 650, 658–660 xmlns attribute, 647 XPath query language, 669 XQuery language, 669 XQuery methods, 669–671 XSD (XML Schema Definition language), 650, 658–660 XSINIL option, 668 XSL (Extensible Stylesheet Language), 649 XSN (transaction sequence number), 362–363 709 ... contrast to earlier database systems (network and hierarchical), relational database systems are based upon the relational data model, which has a strong mathematical background Note A data model... spatial data as the topic Differences Between SQL and Transact -SQL Syntax Transact -SQL, SQL Server’s relational database language, has several nonstandardized properties that generally are not... important part of a relational database system: a database language For all such systems, there is only one language that counts: SQL In this chapter, all components of SQL Server’s own database language,