0% found this document useful (0 votes)
17 views85 pages

Pro T SQL 2005 Programmer s Guide Expert s Voice 1st Edition Michael Coles - The ebook is now available, just one click to start reading

The document provides information about the book 'Pro T-SQL 2005 Programmer's Guide' by Michael Coles, which serves as a comprehensive guide for SQL Server 2005 T-SQL programming. It covers new features, tools, and enhancements in T-SQL, along with numerous code samples for practical understanding. Additionally, it includes links to download the book and other related ebooks from ebookultra.com.

Uploaded by

nubiaavsin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views85 pages

Pro T SQL 2005 Programmer s Guide Expert s Voice 1st Edition Michael Coles - The ebook is now available, just one click to start reading

The document provides information about the book 'Pro T-SQL 2005 Programmer's Guide' by Michael Coles, which serves as a comprehensive guide for SQL Server 2005 T-SQL programming. It covers new features, tools, and enhancements in T-SQL, along with numerous code samples for practical understanding. Additionally, it includes links to download the book and other related ebooks from ebookultra.com.

Uploaded by

nubiaavsin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 85

Visit https://ebookultra.

com to download the full version and


explore more ebooks

Pro T SQL 2005 Programmer s Guide Expert s Voice


1st Edition Michael Coles

_____ Click the link below to download _____


https://ebookultra.com/download/pro-t-
sql-2005-programmer-s-guide-expert-s-voice-1st-edition-
michael-coles/

Explore and download more ebooks at ebookultra.com


Here are some suggested products you might be interested in.
Click the link to download

Pro Oracle SQL Expert s Voice in Oracle 1st Edition Karen


Morton

https://ebookultra.com/download/pro-oracle-sql-expert-s-voice-in-
oracle-1st-edition-karen-morton/

The Definitive Guide to iReport Expert s Voice 1st Edition


Giulio Toffoli

https://ebookultra.com/download/the-definitive-guide-to-ireport-
expert-s-voice-1st-edition-giulio-toffoli/

Pro JPA 2 Mastering the Java Persistence API Expert s


Voice in Java Technology 1st Edition Mike Keith

https://ebookultra.com/download/pro-jpa-2-mastering-the-java-
persistence-api-expert-s-voice-in-java-technology-1st-edition-mike-
keith/

The Composer s Voice Edward T. Cone

https://ebookultra.com/download/the-composer-s-voice-edward-t-cone/
Introducing Silverlight 4 Expert s Voice in Silverlight
1st Edition Ashish Ghoda

https://ebookultra.com/download/introducing-silverlight-4-expert-s-
voice-in-silverlight-1st-edition-ashish-ghoda/

Foundations of ASP NET AJAX Expert s Voice in Net 2nd


Edition Robin Pars

https://ebookultra.com/download/foundations-of-asp-net-ajax-expert-s-
voice-in-net-2nd-edition-robin-pars/

Professional Microsoft SQL Server 2008 Administration Wrox


Programmer to Programmer 1st Edition Brian Knight

https://ebookultra.com/download/professional-microsoft-sql-
server-2008-administration-wrox-programmer-to-programmer-1st-edition-
brian-knight/

Excel 2007 VBA Programmer s Reference Programmer to


Programmer 1st Edition John Green

https://ebookultra.com/download/excel-2007-vba-programmer-s-reference-
programmer-to-programmer-1st-edition-john-green/

SharePoint 2007 and Office Development Expert Solutions


Programmer to Programmer 1st Edition Randy Holloway

https://ebookultra.com/download/sharepoint-2007-and-office-
development-expert-solutions-programmer-to-programmer-1st-edition-
randy-holloway/
Pro T SQL 2005 Programmer s Guide Expert s Voice 1st
Edition Michael Coles Digital Instant Download
Author(s): Michael Coles
ISBN(s): 9781590597941, 159059794X
Edition: 1
File Details: PDF, 5.95 MB
Year: 2007
Language: english
 CYAN  YELLOW
MAGENTA BLACK
 PANTONE 123 C

Books for professionals by professionals ® The EXPERT’s VOIce ® in SQL Server


Companion
eBook Available
Pro T-SQL 2005 Programmer’s Guide
Dear Reader,

Pro T-SQL 2005 Programmer’s Guide


Welcome to the wonderful world of SQL Server 2005 T-SQL programming. SQL
Server 2005 introduces dozens of new features for programmers, that I fully cover
in this book, including the following:

Pro
• New and improved tools to interact with SQL Server, such as SQLCMD
and SQL Server Management Studio
• New ways to store, query, and manipulate XML using XPath, XQuery,
and the new xml data type

T-SQL 2005
• .NET integration via the SQL Common Language Runtime (SQLCLR)
• Integrated HTTP SOAP endpoints
• Built-in encryption statements and functions
• Several new T-SQL keywords and functions
• Enhancements to existing T-SQL statements
I wrote this book as a feature guide and reference work for developers who
want to take full advantage of the power of T-SQL on SQL Server 2005. This
book is particularly useful for experienced T-SQL and SQL programmers from

Programmer’s Guide
other platforms who want to harness the full power of T-SQL on the SQL Server
2005 platform. And because this book is a guide for developers, I have included
dozens of code samples that explore each topic as I introduce it. I have also
organized this book to serve as a handy reference guide for those times when
you just need a quick refresher on a specific function, or need to see the syntax
of one of the new T-SQL statements.
In all, I hope that after reading this book you will take with you a sense of the
power of T-SQL 2005, as well as the practical knowledge to take full advantage of the
newest member of the SQL Server family in your own application-development
endeavors. I’ve certainly enjoyed putting this T-SQL 2005 programming book
together, and I hope you find it valuable in your T-SQL development efforts.
Michael Coles, MCDBA, MCP The newest T-SQL features and functionality for
programmers on the SQL Server 2005 platform
Companion eBook
THE APRESS ROADMAP
Microsoft SQL Server
2005 High Availability
Beginning SQL Server 2005 Pro T-SQL 2005
for Developers Programmer’s Guide Pro SQL Server 2005
Database Design
See last page for details and Optimization
on $10 eBook version Beginning SQL Server
Pro SQL Server 2005
2005 Express for Developers
Pro SQL Server 2005
Replication

SOURCE CODE ONLINE


www.apress.com
ISBN-13: 978-1-59059-794-1
ISBN-10: 1-59059-794-X
Coles Michael Coles
54999

US $49.99

Shelve in
SQL Server

User level:
9 781590 597941
Intermediate–Advanced

this print for content only—size & color not accurate spine = 1.057" 560 page count
794Xfmfinal.qxd 3/29/07 4:17 PM Page i

Pro T-SQL 2005


Programmer’s Guide

Michael Coles
794Xfmfinal.qxd 3/29/07 4:17 PM Page ii

Pro T-SQL 2005 Programmer’s Guide


Copyright © 2007 by Michael Coles
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.
ISBN-13(pbk): 978-1-59059-794-1
ISBN-10(pbk): 1-59059-794-X
Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1
Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence
of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark
owner, with no intention of infringement of the trademark.
Lead Editor: James Huddleston
Technical Reviewer: Alexzander N. Nepomnjashiy
Editorial Board: Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick,
Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Jeff Pepper, Paul Sarknas,
Dominic Shakeshaft, Jim Sumser, Matt Wade
Project Manager: Denise Santoro Lincoln
Copy Edit Manager: Nicole Flores
Copy Editor: Jennifer Whipple
Assistant Production Director: Kari Brooks-Copony
Production Editor: Laura Esterman
Compositor: Linda Weidemann, Wolf Creek Press
Proofreaders: Lori Bring and Linda Siefert
Indexer: Broccoli Information Management
Cover Designer: Kurt Krames
Manufacturing Director: Tom Debolski
Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor,
New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected],
or visit http://www.springeronline.com.
For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley,
CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http://www.apress.com.
The information in this book is distributed on an “as is” basis, without warranty. Although every precaution
has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to
any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly
by the information contained in this work.
The source code for this book is available to readers at http://www.apress.com in the Source Code/
Download section.
794Xfmfinal.qxd 3/29/07 4:17 PM Page iii

For Devoné and Rebecca


794Xfmfinal.qxd 3/29/07 4:17 PM Page iv
794Xfmfinal.qxd 3/29/07 4:17 PM Page v

Contents at a Glance

About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv


About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi

■CHAPTER 1 The Role of T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


■CHAPTER 2 Tools of the Trade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
■CHAPTER 3 T-SQL for SQL Server 2000 Programmers . . . . . . . . . . . . . . . . . . . . . . 33
■CHAPTER 4 Control-of-Flow and CASE Expressions . . . . . . . . . . . . . . . . . . . . . . . . . 63
■CHAPTER 5 User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
■CHAPTER 6 Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
■CHAPTER 7 Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
■CHAPTER 8 T-SQL Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
■CHAPTER 9 Error Handling and Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
■CHAPTER 10 Dynamic SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
■CHAPTER 11 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
■CHAPTER 12 XQuery and XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
■CHAPTER 13 SQL Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
■CHAPTER 14 SQLCLR Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
■CHAPTER 15 .NET Client Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
■CHAPTER 16 HTTP Endpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
■APPENDIX A T-SQL Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
■APPENDIX B XQuery Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
■APPENDIX C XQuery Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
■APPENDIX D Selected T-SQL Source Code Listings . . . . . . . . . . . . . . . . . . . . . . . . . 463
■APPENDIX E .NET Source Code Listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

v
794Xfmfinal.qxd 3/29/07 4:17 PM Page vi
794Xfmfinal.qxd 3/29/07 4:17 PM Page vii

Contents

About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv


About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi

■CHAPTER 1 The Role of T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


ANSI SQL Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Imperative vs. Declarative Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Elements of Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Whitespace Is Your Friend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
One Entry, One Exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
SQL-92 Syntax Outer Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Avoid SELECT * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Initializing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

■CHAPTER 2 Tools of the Trade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15


SQLCMD Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Command-Line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
SQLCMD Scripting Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SQLCMD Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SQLCMD Interactive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
SQL Server Management Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
SSMS Editing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Context-Sensitive Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Graphical Query Execution Plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Project Management Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

vii
794Xfmfinal.qxd 3/29/07 4:17 PM Page viii

viii ■CONTENTS

SQL Server 2005 Books Online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31


AdventureWorks Sample Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

■CHAPTER 3 T-SQL for SQL Server 2000 Programmers . . . . . . . . . . . . . . . . . 33


New Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
XML Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
varchar(max), nvarchar(max), and varbinary(max) . . . . . . . . . . . . . . 34
Data Manipulation Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Common Table Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
OUTPUT Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
INTERSECT and EXCEPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
TOP Keyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
CROSS APPLY and OUTER APPLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
TABLESAMPLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
PIVOT and UNPIVOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Ranking Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
NEWSEQUENTIALID Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
The OVER Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Other New Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

■CHAPTER 4 Control-of-Flow and CASE Expressions . . . . . . . . . . . . . . . . . . . 63


Three-Valued Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Control-of-Flow Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
BEGIN…END Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
IF…ELSE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
WHILE, BREAK, and CONTINUE Statements . . . . . . . . . . . . . . . . . . . . 68
GOTO Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
WAITFOR Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
RETURN Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
TRY…CATCH Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
794Xfmfinal.qxd 3/29/07 4:17 PM Page ix

■CONTENTS ix

CASE Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Simple CASE Expression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Searched CASE Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

■CHAPTER 5 User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Scalar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Recursion in Scalar UDFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Procedural Code in UDFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Multistatement Table-Valued Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Inline Table-Valued Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Restrictions on User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Nondeterministic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
State of the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

■CHAPTER 6 Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117


Introducing Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
ALTER PROCEDURE and DROP PROCEDURE . . . . . . . . . . . . . . . . . . . . . . . 122
Why SPs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
SPs in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Recursion in SPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Temporary Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

■CHAPTER 7 Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143


DML Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
When to Use DML Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Nested Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
The UPDATE and COLUMNS_UPDATED Functions . . . . . . . . . . . . . . 156
Triggers and Identity Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Altering, Dropping, and Disabling Triggers . . . . . . . . . . . . . . . . . . . . 162
DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

32eeceee020b1b6c36f7005aec98cc94
794Xfmfinal.qxd 3/29/07 4:17 PM Page x

x ■CONTENTS

■CHAPTER 8 T-SQL Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

The Encryption Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175


Service Master Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Database Master Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Asymmetric Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Symmetric Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Hashing and Encryption Without Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

■CHAPTER 9 Error Handling and Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203


Legacy Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
TRY…CATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
RAISERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Debugging Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

■CHAPTER 10 Dynamic SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215


The EXECUTE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
SQL Injection and Dynamic SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
More on Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Troubleshooting Dynamic SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
sp_executesql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Dynamic SQL and Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Client-Side Parameterization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
794Xfmfinal.qxd 3/29/07 4:17 PM Page xi

■CONTENTS xi

■CHAPTER 11 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227


Legacy XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
FOR XML RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
FOR XML AUTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
FOR XML EXPLICIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
FOR XML PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
OPENXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
The xml Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Untyped xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Typed xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
xml Data Type Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
The query() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
The value() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
The exist() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
The nodes() Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
The modify() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
XML Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
XSL Transformations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

■CHAPTER 12 XQuery and XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273


X-Lingo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
XPath and FOR XML PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
XPath Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Columns Without Names and Wildcards . . . . . . . . . . . . . . . . . . . . . . 278
Element Grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
The data() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
XPath and NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
WITH XMLNAMESPACES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Node Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
794Xfmfinal.qxd 3/29/07 4:17 PM Page xii

xii ■CONTENTS

XQuery and the XML Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285


Expressions and Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
The query() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Location Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Node Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Axis Specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Dynamic XML Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
XQuery Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Predicates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Conditional Expressions (if . . . then . . . else) . . . . . . . . . . . . . . . . . . 310
Arithmetic Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
XQuery Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Constructors and Casting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
FLWOR Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

■CHAPTER 13 SQL Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323


Catalog Views. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
INFORMATION_SCHEMA Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Compatibility Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
System Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

■CHAPTER 14 SQLCLR Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343


The Old Way . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
The SQLCLR Way . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
SQLCLR Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
SQLCLR User-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
SQLCLR Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
SQLCLR User-Defined Aggregates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
SQLCLR User-Defined Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
794Xfmfinal.qxd 3/29/07 4:17 PM Page xiii

■CONTENTS xiii

■CHAPTER 15 .NET Client Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379


ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
The .NET SqlClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Parameterized Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Nonquery, Scalar, and XML Querying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
SqlBulkCopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Multiple Active Result Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

■CHAPTER 16 HTTP Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411


What Are HTTP Endpoints? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
The CREATE ENDPOINT Statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
CREATE ENDPOINT Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
HTTP Protocol Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
SOAP Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Creating an HTTP Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
WSDL Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Creating a Web Service Consumer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Executing HTTP Endpoint Ad Hoc Queries . . . . . . . . . . . . . . . . . . . . . 430
The sqlbatch Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Altering and Dropping Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

■APPENDIX A T-SQL Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

■APPENDIX B XQuery Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

■APPENDIX C XQuery Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

■APPENDIX D Selected T-SQL Source Code Listings . . . . . . . . . . . . . . . . . . . . 463

■APPENDIX E .NET Source Code Listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
794Xfmfinal.qxd 3/29/07 4:17 PM Page xiv
794Xfmfinal.qxd 3/29/07 4:17 PM Page xv

About the Author

■MICHAEL COLES is a soldier, a scholar, a software engineer, and a


writer. He has worked in the IT industry for more than a decade, with
an emphasis on database-enabled applications. He has worked in a
wide range of industries, including retail, manufacturing, and tech-
nology, to name a few.
After his most recent tour of active duty military service, Michael
landed in New Jersey and now works as a senior developer for
Barnes & Noble in New York.

xv
794Xfmfinal.qxd 3/29/07 4:17 PM Page xvi
794Xfmfinal.qxd 3/29/07 4:17 PM Page xvii

About the Technical Reviewer

■ALEXZANDER N. NEPOMNJASHIY works as a Microsoft SQL Server


DBA with NeoSystems North-West Inc., an ISO 9001:2000–certified
software company. As a DBA, he’s responsible for drafting design
specifications for proposed projects and building database-related
applications to spec. As an IT professional, Alexzander has more
than 13 years experience in DBMS planning, security, trouble-
shooting, and performance optimization.

xvii
794Xfmfinal.qxd 3/29/07 4:17 PM Page xviii
794Xfmfinal.qxd 3/29/07 4:17 PM Page xix

Acknowledgments

T here are a lot of people I would like to acknowledge for helping to make this book a
reality. First, I’d like to thank the team at Apress. This book would not have been possible
without my editor, Jim Huddleston, who set the tone and got the ball rolling. I’d also like
to thank the keeper of the schedule, Denise Santoro Lincoln, whose dedication and per-
severance kept us all on track.
I’d like to thank my technical reviewer Alexzander Nepomnjashiy for keeping me
honest, copy editor Jennifer Whipple for keeping me consistent, production editor
Laura Esterman for making it look so good, and everyone else who contributed to
this book.
While I’m at it, I’d like to give special thanks to Steve Jones, Andy Warren, and
Brian Knight, three of the founders of SQL Server Central. These guys thought enough
of my writing to give me my first shot at writing for them. Thanks also to ASP Today edi-
tor Simon Robinson for publishing me and for introducing me to the team at Apress.
Thanks to my family, Jennifer, Chris, Deja, Desmond, and, of course, Mom and Eric
for your support. I’d also like to thank my good friends Rob and Laura Whitlock, and my
Army buddy Joe Johnson.
Thank you to my wonderful girlfriend Donna for all your support.
And most of all, thank you to Devoné and Rebecca for being my little angels.

xix
794Xfmfinal.qxd 3/29/07 4:17 PM Page xx
794Xfmfinal.qxd 3/29/07 4:17 PM Page xxi

Introduction

T his book examines SQL Server 2005 T-SQL from a developer’s perspective. It covers a
wide range of developer-specific topics in SQL Server 2005, from an introduction to new
developer tools such as SQLCMD and SQL Server Management Studio to new T-SQL
functionality such as the xml data type, XQuery support, and T-SQL encryption.
I wrote this book as a practical and useful guide to help you make the most of SQL
Server 2005 T-SQL. I provide a generous selection of sample T-SQL and, where appropri-
ate, .NET code to demonstrate specific functionality.

Who This Book Is For


This book is primarily for developers who want to take advantage of the new features in
SQL Server 2005 T-SQL. The book assumes a basic knowledge of SQL—preferably a prior
version of T-SQL—and builds on that foundation.

How This Book Is Structured


This book is designed so that you can either read it cover to cover, or you can use it as a
reference guide to quickly locate just the information you need on any particular topic.
It is structured as follows:

Chapter 1: The Role of T-SQL


This chapter provides a brief history of T-SQL and the ANSI SQL standards. It also pro-
vides some basic hints and tips for getting the most out of your T-SQL code and main-
taining it over the long term. Those readers coming from a background in SQL Server
2000 T-SQL, who are well-versed in T-SQL programming best practices, might choose
to skip this chapter.

xxi
794Xfmfinal.qxd 3/29/07 4:17 PM Page xxii

xxii ■INTRODUCTION

Chapter 2: Tools of the Trade


SQLCMD and SQL Server Management Studio (SSMS) are new tools designed to replace
osql, Enterprise Manager, and Query Analyzer. The online help system and Adventure-
Works sample database are also discussed. If you are just beginning to use SQLCMD or
SSMS, this chapter provides a solid reference.

Chapter 3: T-SQL for SQL Server 2000 Programmers


SQL Server 2005 provides several enhancements that SQL Server 2000 developers will be
able to take advantage of immediately. This chapter covers new SQL Server 2005 data
types, Common Table Expressions (CTEs), and new operators, keywords, and functions.

Chapter 4: Control-of-Flow and CASE Expressions


SQL Server T-SQL has always had procedural extensions built right into it. This chapter
covers ANSI SQL three-valued logic, T-SQL procedural control-of-flow statements, SQL
CASE expressions, and CASE-derivative functions.

Chapter 5: User-Defined Functions


This chapter discusses the three flavors of T-SQL user-defined functions: scalar user-
defined functions, multistatement table-valued functions, and inline table-valued
functions. Examples are provided, with tips on getting the most out of your own user-
defined functions.

Chapter 6: Stored Procedures


SQL Server provides stored procedures, which allow you to create server-side T-SQL
modules. This chapter discusses creation and management of stored procedures, stored
procedure parameters, recursion, and scope.

Chapter 7: Triggers
SQL Server 2005 supports classic Data Manipulation Language (DML) triggers that per-
form actions when you insert, update, or delete rows in a table. Data Definition Language
(DDL) triggers, which fire in response to DDL events, are new to SQL Server 2005 T-SQL.
This chapter discusses both types of triggers.
794Xfmfinal.qxd 3/29/07 4:17 PM Page xxiii

■INTRODUCTION xxiii

Chapter 8: T-SQL Encryption


SQL Server 2005 T-SQL includes a whole new set of statements to manage encryption
keys and certificates, and a wide range of built-in functions to encrypt and decrypt data.
This chapter explores the new T-SQL encryption key management and data encryption
and decryption tools.

Chapter 9: Error Handling and Debugging


This chapter discusses methods for handling errors in your T-SQL code, including legacy
error handling and the new TRY...CATCH structured error-handling statements. Also dis-
cussed is the built-in Visual Studio T-SQL debugging tools.

Chapter 10: Dynamic SQL


The risks (and how to avoid them) and rewards of dynamic SQL are discussed in this
chapter. Client-side parameterization, SQL injection, and validation are also covered.

Chapter 11: XML


This chapter begins with a discussion of the enhancements to legacy SQL Server XML
functionality provided by SQL Server 2005. The chapter continues with an in-depth dis-
cussion of SQL Server’s new XML functionality, including the new xml data type and its
methods, XML schema collections, typed and untyped XML, XML indexes, and XSL
Transformations.

Chapter 12: XQuery and XPath


This chapter expands on the discussion of the enhanced XML functionality that began
in Chapter 11 by providing an in-depth discussion of the XPath and XQuery capabilities
provided by SQL Server 2005. The information and code samples presented in this chap-
ter are designed to get you up and running with SQL Server 2005 XPath and XQuery
quickly.

Chapter 13: SQL Metadata


SQL Server 2005 provides more ways than ever to retrieve metadata about your server
and database objects. This chapter covers SQL Server catalog views, compatibility views,
ANSI-compatible INFORMATION_SCHEMA views, and system stored procedures.
794Xfmfinal.qxd 3/29/07 4:17 PM Page xxiv

xxiv ■INTRODUCTION

Chapter 14: SQLCLR Programming


SQL Server 2005’s Common Language Runtime integration offers new and exciting
possibilities for expanding the power and functionality of your SQL Server–based
applications. This chapter will show you how to create and register SQLCLR assem-
blies that allow access to .NET-based user-defined functions, stored procedures,
user-defined aggregates, and user-defined types.

Chapter 15: .NET Client Programming


The best database in the world is only as useful as its client-side application, and the
.NET Framework provides several tools for client-side SQL Server connectivity. This
chapter discusses ADO.NET, the System.Data.SqlClient namespace and the classes it
exposes for querying data and executing T-SQL statements, and the SqlBulkCopy class.

Chapter 16: HTTP Endpoints


SQL Server’s new HTTP endpoints allow you to expose stored procedures and user-
defined functions as web methods. The new HTTP endpoints feature tight integration
with the SQL Server security model, easy setup and configuration, and greater efficiency
than other methods of exposing SQL Server procedures as web methods.

Prerequisites
At the time of writing, SQL Server 2005 Service Pack 1 was the latest production release.
All of the code samples in the book were developed on SQL Server 2005 Service Pack 1.
Because of changes to the SQL Server engine and to T-SQL in general, I cannot guarantee
compatibility with previous SQL Server 2005 releases, such as the CTP releases.
Most of the code samples were designed to be run against the AdventureWorks
sample database. If you do not have AdventureWorks, I highly recommend that you
download it from http://www.microsoft.com/sql.
Many of the code samples will run properly on SQL Server 2005 Express Edition, but
some will not due to differences in the available features. For example, SQL Server 2005
Express Edition does not support HTTP endpoints. For complete compatibility, use SQL
Server 2005 Standard Edition or better.
Finally, a lot of the code samples in Chapters 14, 15, and 16 are written in VB and C#.
These samples require the Microsoft .NET Framework 2.0 to run. If you want to compile
and tinker with the code samples, I highly recommend you use Microsoft Visual Studio
2005 for the best overall experience.
794Xfmfinal.qxd 3/29/07 4:17 PM Page xxv

■INTRODUCTION xxv

Source Code
As you read through the book, you may choose to type in some of the code samples by
hand because it provides more familiarity with the techniques and styles used. Or you
might want to compile, install, execute, modify, or study the code without entering it
manually. Either way, I highly recommend downloading the source and just generally
playing with it as you read the book.
All of the code is available in the Source Code/Download section of the Apress
website at http://www.apress.com.

Errata
Apress and the author have made every effort to ensure that there are no errors in the
text or the code for this book. However, to err is human, and as such we recognize the
need to keep you informed of any mistakes as they’re discovered and corrected. An
errata sheet will be made available on this book’s main page at http://www.apress.com.
If you find an error that hasn’t already been reported, please let us know.
The Apress website acts as a focus for other information and support, including the
code from all Apress books, sample chapters, previews of forthcoming titles, and articles
on related topics.

Contacting the Author


You can contact Michael Coles via email at [email protected].
794Xfmfinal.qxd 3/29/07 4:17 PM Page xxvi
794Xch01final.qxd 3/29/07 4:51 PM Page 1

CHAPTER 1

The Role of T-SQL

T he history of Structured Query Language (SQL), and its direct descendant Transact-
SQL (T-SQL), all began in 1970 when Dr. E. F. Codd published his influential paper,
“A Relational Model of Data for Large Shared Data Banks,” in the Communications of
the ACM by the Association for Computing Machinery (ACM). In this paper Dr. Codd
introduced the definitive standard for relational databases. IBM went on to create the
first relational database management system, known as System R. IBM introduced the
Structured English Query Language (SEQUEL, as it was known at the time) to interact
with this early database to store, modify, and retrieve data. The name was subsequently
changed from SEQUEL to the now-common SQL because of a trademark issue. In 1987
the American National Standards Institute (ANSI) approved a standard for SQL known
as the ANSI SQL-86 standard.
Microsoft entered the relational database management system market in 1989
through a joint venture with Sybase and Ashton-Tate (of dBase fame) to create and
market SQL Server. Since then, Microsoft, Sybase, and Ashton-Tate have gone their
separate ways. Microsoft has introduced several upgrades to Microsoft SQL Server,
including Microsoft SQL Server versions 4.2, 4.21, 6.0, 6.5, 7.0, 2000, and 2005.
Through it all, T-SQL has remained SQL Server’s native tongue and the centerpiece
of SQL Server development.
Although based on the ANSI SQL-92 standard, T-SQL has integrated several ANSI
SQL:1999 standard features. In addition, T-SQL includes advanced procedural extensions
that go above and beyond the ANSI standards. These extensions include control-of-flow
statements, transaction control, error handling, SQLCLR integration, and more. With the
release of SQL Server 2005, Microsoft has expanded T-SQL to include several new features
to support SQLCLR integration, data encryption and decryption, Extensible Markup Lan-
guage (XML) support, and a wide assortment of additional functionality not available in
previous SQL Server releases.
This chapter begins with a discussion of T-SQL ANSI compatibility, then describes
declarative programming languages, and concludes with tips to help you create your own
T-SQL programming style that will help make maintaining and debugging your T-SQL
code as easy as possible.

1
794Xch01final.qxd 3/29/07 4:51 PM Page 2

2 CHAPTER 1 ■ THE ROLE OF T-SQL

ANSI SQL Compatibility


Many people see portability as the main advantage of the ANSI SQL standard. Theor-
etically, you should be able to take your ANSI-compliant SQL Server query and run it
without change on Oracle, DB2, or any other SQL-based relational database manage-
ment system (RDBMS). The key word here is theoretically. In practice, enough differ-
ences exist between RDBMS platforms to prevent this from being practical. Every
vendor implements different ANSI-compliant features, and every vendor provides
their own proprietary extensions.
What ANSI compatibility does provide, however, is portability of knowledge. A strong
knowledge of the ANSI SQL standard is an excellent starting point for porting SQL code
from one RDBMS to another, or even for porting code from one version of SQL Server to
the next. An ANSI-compliant LEFT OUTER JOIN, for example, will have similar syntax and
produce similar results on any ANSI-compliant RDBMS. The ANSI standard also defines
the format and operation of several key functions such as COUNT() and SUM(), which are
guaranteed to have similar syntax and produce similar results on any ANSI-compliant
RDBMS.

Imperative vs. Declarative Languages


SQL is different from many common programming languages such as C++ and Visual
Basic because it is a declarative language. Languages such as C++, Visual Basic, C#, and
even assembler are imperative languages. The imperative language model requires the
user to determine what the end result should be and also tell the computer step by step
how to achieve that result. It’s analogous to asking a cab driver to drive you to the airport
and then giving him turn-by-turn directions to get there.
Consider Listing 1-1, which is a simple C# code snippet that reads in a flat file of
names and displays them on the screen.

Listing 1-1. C# Snippet to Read a Flat File

StreamReader sr = new StreamReader("Person_Contact.txt");


string FirstName = null;
while ((FirstName = sr.ReadLine()) != null) {
Console.WriteLine(s);
}
sr.Dispose();
794Xch01final.qxd 3/29/07 4:51 PM Page 3

CHAPTER 1 ■ THE ROLE OF T-SQL 3

The example performs the following functions in an orderly fashion:

1. The code explicitly opens the storage for input (in this example a flat file is
used as a “database”).

2. It then reads in each record (one record per line), explicitly checking for the
end of file.

3. As it reads the data, the code returns each record for display using
Console.WriteLine().

4. And finally it closes and disposes of the connection to the data file.

Consider what happens when you want to add or delete a name from the flat-file
“database.” In those cases, you must write routines to explicitly reorganize all the data
in the file so it maintains proper ordering. If you want the names to be listed and
retrieved in alphabetical (or any other) order, you must code sort routines as well. Any
type of additional processing on the data requires that you implement separate proce-
dural routines.
Declarative languages such as SQL, on the other hand, let you frame problems in
terms of the end result. All you have to do is describe what you want from SQL Server via
a query and trust the database engine to deliver the correct result as efficiently as possi-
ble. To continue the cab driver analogy from earlier, in a declarative language you would
tell the cab driver to take you to the airport and then trust that he knows the best route.
The SQL equivalent of the C# code in Listing 1-1 might look something like Listing 1-2.

Listing 1-2. SQL Query to Retrieve Names from a Table

SELECT FirstName
FROM Person.Contact;

■Tip Unless otherwise specified, you can run all the T-SQL samples in this book in the AdventureWorks
sample database using SQL Server Management Studio or SQLCMD.

To sort your data, you can simply add an ORDER BY clause to the SELECT query in
Listing 1-2. With properly designed and indexed tables, SQL Server can automatically
reorganize your data for efficient retrieval after you insert, update, or delete rows.
T-SQL includes extensions that allow you to override SQL Server’s declarative syntax.
In fact, you could rewrite the previous example as a cursor to closely mimic the C# sam-
ple code. More often than not, however, trying to force the one-row-at-a-time imperative
794Xch01final.qxd 3/29/07 4:51 PM Page 4

4 CHAPTER 1 ■ THE ROLE OF T-SQL

model on SQL Server hurts performance and makes simple projects more complex than
they need to be.
One of the great features of SQL Server is that you can invoke its power, in its native
language, from nearly any other programming language. In .NET you can connect and
issue SQL queries and T-SQL statements to SQL Server via the System.Data.SqlClient
namespace, which I will discuss further in Chapter 15. This gives you the opportunity to
combine SQL’s declarative syntax with the strict control of an imperative language.

Elements of Style
Selecting a particular style and using it consistently helps with debugging and code
maintenance. The following sections contain some general recommendations to make
your T-SQL code easy to read, debug, and maintain.

Whitespace Is Your Friend


SQL Server ignores extra whitespace between keywords and identifiers in SQL queries
and statements. A single statement or query can include extra spaces, can contain tab
characters, and can even extend across several lines. You can use this knowledge to great
advantage. Consider Listing 1-3, which is adapted from the HumanResources.vEmployee
view in the AdventureWorks database.

Listing 1-3. HumanResources.vEmployee View from the AdventureWorks Database

SELECT [HumanResources].[Employee].[EmployeeID], [Person].[Contact].[Title],


[Person].[Contact].[FirstName], [Person].[Contact].[MiddleName],
[Person].[Contact].[LastName], [Person].[Contact].[Suffix],
[HumanResources].[Employee].[Title] AS [JobTitle], [Person].[Contact].[Phone],
[Person].[Contact].[EmailAddress], [Person].[Contact].[EmailPromotion],
[Person].[Address].[AddressLine1], [Person].[Address].[AddressLine2],
[Person].[Address].[City], [Person].[StateProvince].[Name] AS [StateProvinceName],
[Person].[Address].[PostalCode], [Person].[CountryRegion].[Name] AS
[CountryRegionName], [Person].[Contact].[AdditionalContactInfo] FROM
[HumanResources].[Employee] INNER JOIN [Person].[Contact] ON
[Person].[Contact].[ContactID] = [HumanResources].[Employee].[ContactID] INNER JOIN
[HumanResources].[EmployeeAddress] ON [HumanResources].[Employee].[EmployeeID] =
[HumanResources].[EmployeeAddress].[EmployeeID] INNER JOIN [Person].[Address] ON
[HumanResources].[EmployeeAddress].[AddressID] = [Person].[Address].[AddressID]
794Xch01final.qxd 3/29/07 4:51 PM Page 5

CHAPTER 1 ■ THE ROLE OF T-SQL 5

INNER JOIN [Person].[StateProvince] ON [Person].[StateProvince].[StateProvinceID] =


[Person].[Address].[StateProvinceID] INNER JOIN [Person].[CountryRegion] ON
[Person].[CountryRegion].[CountryRegionCode] =
[Person].[StateProvince].[CountryRegionCode]

This query will run and return the correct result, but it’s hard to read. You can use
whitespace and table aliases to generate a version that is much easier on the eyes, as
demonstrated in Listing 1-4.

Listing 1-4. HumanResources.vEmployee View Reformatted for Readability

SELECT e.EmployeeID,
c.Title,
c.FirstName,
c.MiddleName,
c.LastName,
c.Suffix,
e.Title AS JobTitle,
c.Phone,
c.EmailAddress,
c.EmailPromotion,
a.AddressLine1,
a.AddressLine2,
a.City,
sp.Name AS StateProvinceName,
a.PostalCode,
cr.Name AS CountryRegionName,
c.AdditionalContactInfo
FROM HumanResources.Employee e
INNER JOIN Person.Contact c
ON c.ContactID = e.ContactID
INNER JOIN HumanResources.EmployeeAddress ea
ON e.EmployeeID = ea.EmployeeID
INNER JOIN Person.Address a
ON ea.AddressID = a.AddressID
INNER JOIN Person.StateProvince sp
ON sp.StateProvinceID = a.StateProvinceID
INNER JOIN Person.CountryRegion cr
ON cr.CountryRegionCode = sp.CountryRegionCode;
794Xch01final.qxd 3/29/07 4:51 PM Page 6

6 CHAPTER 1 ■ THE ROLE OF T-SQL

Notice the ON keywords are indented, associating them visually with the INNER JOIN
operators directly before them in the listing. The column names on the lines directly after
the SELECT keyword are also indented, associating them visually with the SELECT keyword.
This particular style is useful in helping visually break up a query into sections. The per-
sonal style you decide upon might differ from this one, but once you have decided on a
standard indentation style, be sure to apply it consistently throughout your code.
Code that is easy to read is, by default, easier to debug and maintain. The second ver-
sion uses table aliases, plenty of whitespace, and the semicolon (;) terminator to mark
the end of the SELECT statement in order to make the code more easily readable. Although
not always required, it is a good idea to get into the habit of using the terminating semi-
colon in your SQL queries.

■Note Semicolons are required terminators for some statements in SQL Server 2005. Instead of trying to
remember all the special cases where they are or aren’t required, it is a good idea to get into the habit of
using the semicolon statement terminator throughout your T-SQL code. You might notice the use of semi-
colon terminators in all the examples in this book.

Naming Conventions
SQL Server allows you to name your database objects, such as tables, views, procedures,
and so on, using just about any combination of up to 128 characters (116 characters for
local temporary table names) as long as you enclose them in double quotes (") or brack-
ets ([ ]). Just because you can, however, doesn’t necessarily mean you should. Many of
the allowed characters are hard to differentiate from other similar-looking characters,
and some might not port well to other platforms. The following suggestions will help you
avoid potential problems:

• Use alphabetic characters (A–Z, a–z, and Unicode Standard 3.2 letters) for the first
character of your identifiers. The obvious exceptions are SQL Server variable
names that start with the at sign (@), temporary tables and procedures that start
with the number sign (#), and global temporary tables and procedures that begin
with the double number sign (##).

• Many built-in T-SQL functions and system variables have names that begin with
a double at sign (@@), such as @@ERROR and @@IDENTITY. To avoid confusion and
possible conflicts, don’t use a leading double at sign to name your identifiers.
794Xch01final.qxd 3/29/07 4:51 PM Page 7

CHAPTER 1 ■ THE ROLE OF T-SQL 7

• Restrict the remaining characters in your identifiers to alphabetic characters


(A–Z, a–z, and Unicode Standard 3.2 letters), numeric digits (0–9), and the under-
score character (_). The dollar sign ($) character, while allowed, is not advisable.

• Avoid embedded spaces, punctuation marks (other than the underscore charac-
ter), and other special characters in your identifiers.

• Avoid using SQL Server 2005 reserved keywords as identifiers (Appendix A lists
the SQL Server reserved keywords).

• Limit the length of your identifiers. Thirty-two characters or less is a reasonable


limit while not being overly restrictive. Much more than that becomes cumber-
some to type and can hurt your code readability.

Finally, to make your code more readable, select a capitalization style for your
identifiers and code, and use it consistently. My preference is to fully capitalize T-SQL
keywords and use mixed case and underscore characters to visually “break up” identi-
fiers into easily readable words. Using all capital characters or inconsistently applying
mixed case to code and identifiers can make your code illegible and hard to maintain.
Consider the example query in Listing 1-5.

Listing 1-5. All-Capital SELECT Query

SELECT I.CUSTOMERID, C.TITLE, C.FIRSTNAME, C.MIDDLENAME,


C.LASTNAME, C.SUFFIX, C.PHONE, C.EMAILADDRESS,
C.EMAILPROMOTION
FROM SALES.INDIVIDUAL I
INNER JOIN PERSON.CONTACT C
ON C.CONTACTID = I.CONTACTID
INNER JOIN SALES.CUSTOMERADDRESS CA
ON CA.CUSTOMERID = I.CUSTOMERID;

The all-capital version is difficult to read. It’s hard to tell the SQL keywords from the
column and table names at a glance. Compound words for column and table names are
not easily identified. Basically, your eyes work a lot harder to read this query than they
should have to, which makes otherwise simple maintenance tasks more difficult. Refor-
matting the code and identifiers makes this query much easier on the eyes, as Listing 1-6
demonstrates.
794Xch01final.qxd 3/29/07 4:51 PM Page 8

8 CHAPTER 1 ■ THE ROLE OF T-SQL

Listing 1-6. Reformatted “Easy-on-the-Eyes” Query

SELECT i.CustomerID,
c.Title,
c.FirstName,
c.MiddleName,
c.LastName,
c.Suffix,
c.Phone,
c.EmailAddress,
c.EmailPromotion
FROM Sales.Individual i
INNER JOIN Person.Contact c
ON c.ContactID = i.ContactID
INNER JOIN Sales.CustomerAddress ca
ON ca.CustomerID = i.CustomerID;

The use of all capitals for the keywords in the second version makes them stand
out from the mixed-case table and column names. Likewise, the mixed-case column
and table names make the compound word names easy to recognize. The net effect is
that the code is easier to read, which makes it easier to debug and maintain. Consistent
use of good formatting habits helps keep trivial changes trivial and makes complex
changes easier.

One Entry, One Exit


When writing stored procedures (SPs) and user-defined functions (UDFs), it’s good
programming practice to use the “one entry, one exit” rule. SPs and UDFs should
have a single entry point and a single exit point (RETURN statement). The following
stored procedure retrieves the ContactTypeID number from the AdventureWorks
Person.ContactType table for the ContactType name passed into it. If no ContactType
exists with the name passed in, a new one is created, and the newly created
ContactTypeID is passed back. Listing 1-7 demonstrates this simple procedure with
one entry point and several exit points.
794Xch01final.qxd 3/29/07 4:51 PM Page 9

CHAPTER 1 ■ THE ROLE OF T-SQL 9

Listing 1-7. Stored Procedure Example with One Entry, Multiple Exits

CREATE PROCEDURE dbo.GetOrAdd_ContactType


(
@Name NVARCHAR(50),
@ContactTypeID INT OUTPUT
)
AS
DECLARE @Err_Code AS INT;
SELECT @Err_Code = 0;

SELECT @ContactTypeID = ContactTypeID


FROM Person.ContactType
WHERE [Name] = @Name;

IF @ContactTypeID IS NOT NULL


RETURN; -- Exit 1: if the ContactType exists

INSERT
INTO Person.ContactType ([Name], ModifiedDate)
SELECT @Name, CURRENT_TIMESTAMP;

SELECT @Err_Code = @@error;


IF @Err_Code <> 0
RETURN @Err_Code; -- Exit 2: if there is an error on INSERT

SELECT @ContactTypeID = SCOPE_IDENTITY();

RETURN @Err_Code; -- Exit 3: after successful INSERT


GO

Listing 1-8 updates the previous example to give it a single entry point and a single
exit point, making the logic easier to follow.

Listing 1-8. Stored Procedure with One Entry, One Exit

CREATE PROCEDURE dbo.GetOrAdd_ContactType


(
@Name NVARCHAR(50),
@ContactTypeID INT OUTPUT
)
794Xch01final.qxd 3/29/07 4:51 PM Page 10

10 CHAPTER 1 ■ THE ROLE OF T-SQL

AS
DECLARE @Err_Code AS INT;
SELECT @Err_Code = 0;

SELECT @ContactTypeID = ContactTypeID


FROM Person.ContactType
WHERE [Name] = @Name;

IF @ContactTypeID IS NULL
BEGIN
INSERT
INTO Person.ContactType ([Name], ModifiedDate)
SELECT @Name, CURRENT_TIMESTAMP;

SELECT @Err_Code = @@error;


IF @Err_Code = 0 -- If there's an error, skip next
SELECT @ContactTypeID = SCOPE_IDENTITY();
END
RETURN @Err_Code; -- Single exit point
GO

This rule also applies to looping structures, which you implement via the WHILE
statement in T-SQL. Avoid using the WHILE loop’s CONTINUE and BREAK statements and the
GOTO statement; these statements lead to old-fashioned, difficult-to-maintain “spaghetti
code.”

SQL-92 Syntax Outer Joins


Microsoft has been warning us for a long time, and now it has finally gone and done it.
SQL Server 2005 finally eliminates the old-style *= and =* outer join operators. Queries
like the one in Listing 1-9 won’t work with SQL Server 2005.

Listing 1-9. Query Using Old-Style Join Operators

SELECT o.name
FROM sys.objects o,
sys.views v
WHERE o.object_id *= v.object_id;
794Xch01final.qxd 3/29/07 4:51 PM Page 11

CHAPTER 1 ■ THE ROLE OF T-SQL 11

SQL responds to this query with one of the most elaborate error messages ever seen
in a Microsoft product:

Msg 4147, Level 15, State 1, Line 4


The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query
without modification, please set the compatibility level for current database
to 80 or lower, using stored procedure sp_dbcmptlevel. It is strongly
recommended to rewrite the query using ANSI outer join operators (LEFT OUTER
JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join
operators will not be supported even in backward-compatibility modes.

As the error message suggests, you can use the sp_dbcmptlevel stored procedure to
revert the database compatibility to 80 (SQL Server 2000) to circumvent the problem.
As the error message also suggests, the old-style join operators will not be supported in
future versions, even in backward-compatibility mode. If you do have old-style joins in
your T-SQL code, the best course of action is to convert them to ANSI SQL standard
joins as soon as possible. Listing 1-10 updates the previous query to use the current
ANSI standard.

Listing 1-10. ANSI SQL-92 Standard Join Syntax

SELECT o.name
FROM sys.objects o
LEFT JOIN sys.views v
ON o.object_id = v.object_id;

■Note You can use sp_dbcmptlevel to revert various SQL Server behaviors to a version prior to SQL
Server 2000. Use a compatibility level of 80 for SQL Server 2000, 70 for SQL Server 7.0, 65 for SQL
Server 6.5, and 60 for SQL Server 6.0. You should avoid this unless you have a “compelling reason” for
reverting to old compatibility modes.

This book uses the ANSI SQL-92 syntax joins in its examples.
794Xch01final.qxd 3/29/07 4:51 PM Page 12

12 CHAPTER 1 ■ THE ROLE OF T-SQL

Avoid SELECT *
Consider the SELECT * style of querying. In a SELECT clause, the asterisk (*) is a shorthand
way of specifying that all columns in a table should be returned. Although SELECT * is a
handy tool for ad hoc querying of tables during development and debugging, you should
not use it in a production system. One reason to avoid this method of querying is to mini-
mize the amount of data retrieved with each call. SELECT * retrieves all columns, whether
or not they are needed by the higher-level applications. For queries that return a large
number of rows, even one or two extraneous columns can waste a lot of resources.
Also, if the underlying table or view is altered, your front-end application can receive
extra columns in, or columns could be missing from, the result set returned, causing
errors that can be hard to locate. By specifying the column names, your front-end appli-
cation can be assured that only the required columns are returned by a query and that
errors caused by missing columns will be easier to locate.

Initializing Variables
When you create stored procedures, user-defined functions, or any script that uses T-SQL
user variables, you should initialize those variables before the first use. Unlike other pro-
gramming languages that guarantee newly declared variables will be initialized to 0 or an
empty string (depending on their data types), T-SQL guarantees only that newly declared
variables will be initialized to NULL. Consider the code snippet shown in Listing 1-11.

Listing 1-11. Sample Code Using an Uninitialized Variable

DECLARE @i INT;
SELECT @i = @i + 5;
SELECT @i;

The result is NULL, a shock if you were expecting 5. Expecting SQL Server to initialize
numeric variables to 0 (like @i in the previous example), or an empty string, will result in
bugs that can be extremely difficult to locate in your T-SQL code. To avoid these prob-
lems, always explicitly initialize your variables after declaration, as demonstrated in
Listing 1-12.

Listing 1-12. Sample Code Using an Initialized Variable

DECLARE @i INT;
SELECT @i = 0; -- Added this statement to initialize @i to 0
SELECT @i = @i + 5;
SELECT @i;
794Xch01final.qxd 3/29/07 4:51 PM Page 13

CHAPTER 1 ■ THE ROLE OF T-SQL 13

Summary
This chapter introduced T-SQL. The topics discussed include ANSI SQL:1999 compatibil-
ity in SQL Server 2005 and the difference between imperative and declarative languages.
You also looked at SQL programming style considerations and how they can make your
T-SQL code easy to debug and maintain.
The next chapter provides an overview of the new and improved tools available “out
of the box” for developers. Specifically, Chapter 2 will discuss the SQLCMD replacement
for osql, as well as SQL Server Management Studio, SQL Server 2005 Books Online, and
some of the other tools available for making writing, editing, testing, and debugging eas-
ier and faster than ever.
794Xch01final.qxd 3/29/07 4:51 PM Page 14
794Xch02final.qxd 3/29/07 4:50 PM Page 15

CHAPTER 2

Tools of the Trade

S QL Server 2005 comes with a host of tools and utilities to make development easier.
Some of the most important tools for developers include the following:

• The SQLCMD utility

• Microsoft SQL Server Management Studio

• SQL Server 2005 Books Online

This chapter discusses these tools as well as the AdventureWorks sample database,
which I use in the examples in this book. Along the way, this chapter will also cover some
of the SQL Server connectivity features of Visual Studio 2005.

SQLCMD Utility
The SQLCMD utility is an update to the SQL 2000 osql command-line utility. You can use
it to execute batches of T-SQL statements from script files, individual queries or batches
of queries in interactive mode, or individual queries from the command line.

Command-Line Options
You can run SQLCMD from the command line with the following syntax:

sqlcmd [ [-U login_id ] [-P password ] | [-E] ]


[-S server [\instance] ] [-d db_name] [-H workstation]
[-l timeout] [-t timeout] [-h headers] [-s column_separator] [-w column_width]
[-a packet_size] [-I] [-L[c] ] [-W] [-r[0|1]]
[-q "query"] [-Q "query"] [-c batch_term] [-e]
[-m error_level] [-V severity_level] [-b]
[-i input_file [,input_file2 [, ...] ] ] [-o output_file] [-u]
[-v var = "value" [,var2 = "value2"] [,...] ] [-X[1] ] [-x] [-?]

15
794Xch02final.qxd 3/29/07 4:50 PM Page 16

16 CHAPTER 2 ■ TOOLS OF THE TRADE

[-z new_password] [-Z new_password]


[-f codepage | i:in_codepage [,o:out_codepage] ]
[-k[1|2] ] [-y display_width] [-Y display_width] [-p[1] ] [-R] [-A]

The command-line switches are case-sensitive. Table 2-1 lists the SQLCMD
command-line options.

Table 2-1. SQLCMD Command-Line Options

Option Description
-? The -? option displays the SQLCMD help/syntax screen.

-A The -A option tells SQLCMD to log in to SQL Server with a


Dedicated Administrator Connection. This type of connection is
usually used for troubleshooting.

-a packet_size The -a option requests communications with a specific packet


size. The default is 4096. packet_size must be from 512 to 32767.

-b The -b option specifies that SQLCMD exits on an error and returns


an ERRORLEVEL value to the operating system. When this option is
set, a SQL error of severity 11 or greater will return an ERRORLEVEL
of 1; an error or message of severity 10 or less will return an
ERRORLEVEL of 0. If the -V option is also used, SQLCMD will report
only the errors with a severity greater than or equal to the
severity_level (level 11 or greater) specified with the -V option.

-c batch_term The -c option specifies the batch terminator. By default it is the GO


keyword. Avoid using special characters and reserved words as the
batch terminator.

-d db_name The -d option specifies the database to use after SQLCMD


connects to SQL Server. Alternatively, you can set this option via
the SQLCMDDBNAME environment variable. If the database specified
does not exist, SQLCMD exits with an error.
-E The -E option uses a trusted connection (Windows Authentication
mode) to connect to SQL Server. This option ignores the
SQLCMDUSER and SQLCMDPASSWORD environment variables, and you
cannot use it with the -U and -P options.

-e The -e option prints (echoes) input scripts to the standard output


device (usually the screen by default).
794Xch02final.qxd 3/29/07 4:50 PM Page 17

CHAPTER 2 ■ TOOLS OF THE TRADE 17

Option Description
-f codepage | i:in_codepage The -f option specifies the code pages for input and output. If i: is
[,o:out_codepage] specified, the in_codepage is the input code page. If o: is specified,
out_codepage is the output code page. If i: and o: are not speci-
fied, codepage supplied is the input and output code pages. To
specify code pages, use their numeric identifier. The following
code pages are supported by SQL Server 2005:
Code Page Number Code Page Name
1258 Vietnamese
1257 Baltic
1256 Arabic
1255 Hebrew
1254 Turkish
1253 Greek
1252 Latin1 (ANSI)
1251 Cyrillic
1250 Central European
950 Chinese(Traditional)
949 Korean
936 Chinese (Simplified)
932 Japanese
874 Thai
850 Multilingual (MS-DOS Latin1)
437 MS-DOS U.S. English

-H workstation The -H option sets the workstation name. You can use -H to
differentiate between sessions with commands such as sp_who.

-h headers The -h option specifies the number of rows of data to print before
a new column header is generated. The value must be from –1 (no
headers) to 2147483647. The default value of 0 prints headings
once for each set of results.
-I The -I option sets the connection QUOTED_IDENTIFIER option to ON.
Turning the QUOTED_IDENTIFIER option on makes SQL Server follow
the ANSI SQL-92 rules for quoted identifiers. This option is set to
OFF by default.

-i input_file [,input_file2] The -i option specifies SQLCMD should use files that contain
[,...] batches of T-SQL statements for input. The files are processed in
order from left to right. If any of the files don’t exist, SQLCMD exits
with an error. You can use the GO batch terminator inside your SQL
script files.

-k [1|2] The -k option removes control characters from the output. If 1 is


specified, control characters are replaced one for one with spaces.
If 2 is specified, consecutive control characters are replaced with a
single space.

Continued
794Xch02final.qxd 3/29/07 4:50 PM Page 18

18 CHAPTER 2 ■ TOOLS OF THE TRADE

Table 2-1. Continued

Option Description
-L [c] The -L option returns a listing of available SQL Server machines on
the network and local computer. If the -Lc format is used, a “clean”
listing is returned without heading information. The listing is
limited to a maximum of 3,000 servers. Note that because of the
way SQL Server broadcasts to gather server information, any
servers that don’t respond in a timely manner will not be included
in the list. You cannot use the -L option with other options.

-l timeout The -l option specifies the login timeout. The timeout value must
be from 0 to 65534. The default value is 8 seconds, and a value of 0
is no timeout (infinite).

-m error_level The -m option defines an error message customization level. Only


errors with a severity greater than the specified level are displayed.
If error_level is -1, all messages are returned, even informational
messages.

-o output_file -o specifies the file to which SQLCMD should direct output. If -o is


not specified, SQLCMD defaults to standard output (usually the
screen).

-P password The -P option specifies a password to log in to SQL Server when


using SQL Authentication mode. If -P is omitted, SQLCMD looks
for the SQLCMDPASSWORD environment variable to get the password
to log in. If the SQLCMDPASSWORD environment variable isn’t found,
SQLCMD will prompt you for the password to log in using SQL
Authentication mode. If neither -P nor -U is specified and the cor-
responding environment variables aren’t set, SQLCMD will attempt
to log in using Windows Authentication mode.

-p [1] The -p option prints performance statistics for each result set.
Specifying 1 produces colon-separated output.

-Q "query" The -Q and -q options both execute a SQL query/command from


-q "query" the command line. -q remains in SQLCMD after query comple-
tion. -Q exits SQLCMD after completion.
-R The -R option specifies client regional settings for currency and
date/time formatting.

-r [0|1] The -r option redirects error message output to the standard error
output device, the monitor by default. If 1 is specified, all error
messages and informational messages are redirected. If 0 or no
number is specified, only error messages with a severity of 11 or
greater are redirected. The redirection does not work with the -o
option; it does work if standard output is redirected with the
Windows command-line redirector (>).

-S server [\instance] The -S option specifies the SQL Server server or named instance
to which SQLCMD should connect. If this option is not specified,
SQLCMD connects to the default SQL Server instance on the local
machine.
Another Random Scribd Document
with Unrelated Content
Bitter sind der Liebe Leiden,
Fürchterlich der Trennung Schmerz;
Doch wer kann die Liebe meiden,
Denn sie kommt von selbst ins Herz.

Eigensinnig ist ihr Wille;


Sie bestimmt, was schön ist, nur;
Bald besucht sie die Myrtille,
Bald des alten Damons Flur.

Sie hatten sich bemühet, jede Sylbe vernehmlich auszusprechen, und


so war denn die letzte Strophe kaum zu Ende, als Octavio zu klatschen
anfing, daß man es in der ganzen Straße hören konnte. Man ging
allerseits zu Bette, aber mit ganz verschiedenen Gedanken. Antonio
dachte ihr Herz mit den geringsten Kosten zu erobern, und Louise sann,
wie sie sein Geld Beute machen könne, ohne auch nur das geringste von
ihrem Herzen einzubüßen.
Als Antonio eines Abends wieder bey ihr einen Besuch abstattete, [S
hörte man auf der Straße plötzlich ein Gezänke zwischen Mogrobejo, dem
Escudero, und einer unbekannten Person. Louise fragte, was es wäre,
und vernahm, daß der Escudero mit einem Bedienten des Hausherrn in
Streit gerathen sey. Sie ließ ihn herauf kommen, und bath den Genueser
um Vergebung, daß sie ihre Neugierde sogleich in seiner Gegenwart zu
befriedigen suche, was sie vor einem andern, auf dessen Freundschaft sie
weniger rechne, nicht wagen würde. Nun trat der Escudero ganz zornig
ein; Louise fragte ihn um den Hergang des Gezänkes, und Mogrobejo
antwortete: „Der Henker möcht’ auch nicht zanken! da kommt mir der
Bediente des Hausherrn, und verlangt die Miethe für unser Quartier, das
wir auf ein Jahr gemiethet haben, und von dem man doch die Miethe erst
mit Ende des Jahres zu bezahlen pflegt. Da hat er durchaus zu Euer
Gnaden herauf gewollt, und weil ich ihn nicht ließ, war der Kerl grob;
aber er soll mir!“ — „Lass’ er ihn kommen,“ sagte Louise; und es trat ein
Page ein, der ihr ehrfurchtsvoll einen Zettel überreichte. Sie las ihn [S
flüchtig durch, und sagte: „Sag’ er seinem Herrn, ich ließe mich
empfehlen, und ließ ihm sagen, daß ich gar nicht abgeneigt bin, ihn jedes
Mahl für den Monath in vorhinein zu bezahlen. Daß er in Verlegenheit ist,
konnt’ ich nicht wissen; und es gefällt mir, daß er so offenherzig spricht.
Ich sey aber für den Augenblick selbst in Verlegenheit; meine Gelder sind
aus Sevilla noch nicht angekommen, und ich ließe ihn denn ersuchen,
höchstens acht Tage Geduld zu haben, dann wollt’ ich ihm die Miethe für
drey oder noch mehr Monathe auf ein Mahl schicken. Übrigens,
Mogrobejo, weiß ich nicht, warum er ihn nicht sogleich verließ.“ Der Page
trat ab, und Louise sagte: „Es ist wahrhaftig sonderbar, daß ein Hausherr,
dem man für ein einziges Gelaß tausend Realen des Jahrs bezahlt, so
dringend auf eine Monathsmiethe ansteht. Der Mann muß unglücklich,
oder ein Taugenichts seyn, und ich wollte einen Finger von der Hand
verlieren, wenn ich ihm seine tausend Reale augenblicklich in die [S
Betteltasche werfen könnte.“ Sie meinte nun mehr, als zu viel, gesagt zu
haben, um Antonio’s Großmuth und Ehrgeitz in Bewegung zu setzen;
diese beyden Eigenschaften ruhten aber in seinem Herzen in einem so
abgelegenen Winkel, daß sie ein schulgerechter Anatomiker zu suchen
gehabt hätte.
„Ja, wahrhaftig,“ antwortete Antonio, „es sind schwere Zeiten, und der
ordentlichste Mann hat zu sorgen, daß er sich von einem Tag’ auf den
andern behilft.“
Louise merkte nun wohl, daß sie dieses Schalthier nicht mit der Angel
fangen könne; sie brachte denn das Gespräch auf andere Gegenstände,
und sie schieden nach einiger Zeit aus einander.
Es mußte denn ein neuer Plan angelegt werden. Mogrobejo hatte
jemahls, bevor er es bis zum Stallmeister gebracht hatte, als Schreiber
bey einem Sachwalter gedient, und hatte sich da die einer Gerichtsperson
unentbehrliche Geschicklichkeit, jede Handschrift täuschend
nachzuahmen, beygelegt. Diesem befahl nun Louise, die Firma irgend
eines der bekanntesten Genueser zu Sevilla nachzuahmen. Um dieß [S
nun ins Werk setzen zu können, mußte er in einem von den
Kaufmannshäusern, von welchem Briefe abgeschickt wurden,
Bekanntschaft machen. Es gelang ihm auch bald, und er war mit einem
Buchhalter bald so vertraut, daß er ihn täglich auf seiner Schreibstube
besuchte. Nach wenigen Tagen sah er einen Brief, wie er ihn wünschte.
Er war von Carlo Grimaldi, dem reichsten Genueser in Sevilla. Der
Buchhalter war mit seiner Arbeit beschäftigt, und Mogrobejo benutzte
diese Gelegenheit, um den Brief so geschickt nachzuschreiben, daß es
schwer fiel, die echte Schrift von der nachgemachten zu unterscheiden.
Er eilte nun freudig nach Hause, und Louise beschenkte ihn im vorhinein
mit dreyßig Escudo’s.
Als sie Antonio den folgenden Tag besuchte, fand er sie eben mit
einer Menge Geldes beschäftigt, das ihr Feliciane, die unterdessen einen
Ring zu Gelde gemacht, vorgestreckt hatte. „Erlauben Sie,“ sagte sie,
„daß ich nur erst ein kleines Geschäft abthue.“ Sie machte tausend Reale
in eine Rolle zusammen, und rufte Mogrobejo. „Hier, nehm’ er,“ sagte [S
sie; „ich lasse mich dem Hausherrn empfehlen, und hier schick’ ich ihm
gegen Quittung den ganzen Jahreszins. So hat es doch ein Mahl ein
Ende.“
Nun fühlte Antonio erst, wie unartig und unverzeihlich es von ihm
gewesen sey, einer Dame von solchem Rang’ und Vermögen nicht
sogleich all sein Hab’ und Gut anzutragen. Indessen war es nun einmahl
geschehen, und es blieb ihm nichts übrig, als daß er sein Versehen
wieder gut zu machen suchte. Das erste, was ihm beyfiel, war ein Antrag,
sie in die Komödie zu führen. Der Zufall wollte, daß man denselben Tag
gerade ein Zwischenspiel aufführte, das sein Leonardo verfaßt hatte, und
das ihm nun allerdings einen Vorwand zum Antrage gab. „Wahrhaftig,“
sagte Louise, „ich wäre gar nicht abgeneigt, hinzugehen; denn, wie ich
schon neulich aus Leonardo’s Gesang’ abgenommen habe, ist er ein
aufgeweckter Geist, und hat lustige Einfälle.“
„Über dieß,“ erwiederte Antonio, „verdient auch das eigentliche [S
Stück selbst, gesehen zu werden. Es ist die adelige Küchenmagd von
unserm berühmten Lope de Vega.“
„Ja, wir gehen,“ sagte Louise; „aber halt! was bin ich doch für eine
Thörinn? Meine Kleidung und das Theater! Es würde trefflich zusammen
passen!“
„Seyn Sie doch nicht so strenge; was Ihnen auch Ihr Kleid verbiethen
würde, erlaubt Ihnen Ihr Alter. Eine junge, schöne Wittwe! — Gerade Sie
müssen sich ja zerstreuen und aufheitern.“
„Aber was würde die Welt sagen?“
„Die Welt! die Welt! Sie sind auch gar zu genau. Was nennen Sie die
Welt? Die Leute! — gut! die Klugen werden es klug finden, daß Sie sich
nicht einkerkern, wie eine Nonne, und Ihrem Kummer durch die
Einsamkeit noch Nahrung geben; und um die Narren werden Sie sich
wenig bekümmern. Auch läßt sich ein Kleid ablegen.“
„Wenn ich auch dieß einzige Mittel ergreifen wollte, zu dem so viele
andere junge Wittwen ihre Zuflucht nehmen, so kann ich es doch um [S
meines Oheimes willen nicht wagen, der ein Erzgrübler ist. Ich erwart’ ihn
mit jeder Stunde, und stehe mit ihm in solchen Verhältnissen, daß ich
sehr unklug seyn würde, wenn ich seine Freundschaft um einer
Kleinigkeit willen auf’s Spiel setzen wollte.“
„Vortrefflich, klug, und schön gesprochen!“ sagte Antonio; „aber mir
fällt eine Art ein, wie Sie das Zwischenspiel sehen können, ohne in’s
Theater zu gehen.“
„Lassen Sie hören!“ —
„Leonardo hat mehrere junge Freunde, Leute von Talenten, mit deren
Bildung und Unterricht in verschiedenen Dingen er sich immer abzugeben
pflegt; mit diesen soll er uns nun in ein Paar Tagen das Zwischenspiel in
meinem Hause aufführen. Es soll niemand dabey seyn, als Sie, Ihre
Gesellschafterinnen und ich; und gegen diese Art es zu sehen, wird auch
Ihre pünctlichste Vorsicht nichts einzuwenden haben.“ Unter diesen
Bedingnissen nahm sie seinen Antrag an, und schlug ein. Sofort sprachen
sie von verschiedenen anderen Dingen, und da denselben Tag die Post
aus Andalusien ankam, fragte sie ihn, was er wohl Neues aus Sevilla [S
höre. Er antwortete, daß er nichts von Belange höre, und daß seine Briefe
immer nur trockene Geschäfte enthielten. „Ich habe heute,“ fuhr sie fort,
„diesen Zettel von einem Genueser erhalten, der mit meinem Vetter in
Indien im Briefwechsel steht; lesen Sie ihn zur Güte: ich möchte gar zu
gern wissen, ob Sie ihn, und die Person, an die der Brief gerichtet ist,
kennen.“ Er gab sich alle Mühe, ihn ohne Augengläser zu lesen, und las:

„Ich habe vom Capitäne Bolea den Auftrag erhalten, Euer


Wohledlen, nebst unterthänigstem Gruß, zu melden, daß selber
seine Abreise so geschwind’ als möglich beschleunigen wird. Er
befiehlt mir zugleich, Euer Wohledlen acht tausend Thaler
abzuliefern, als weßwegen beyliegender Brief die Anweisung
enthält; mich empfehlend, und meine Dienste auch in wichtigen
Gelegenheiten antragend.
E. W.
Carlo Grimaldi.

Im Zettel lag der Brief: [S

„Herr Juan Baptista Lomelie beliebe an Donna Angela de


Bolea, am Hofe anwesend, acht tausend Thaler in Doppelgeld auf
vierzig Tage verabfolgen zu lassen, wofür ich eben so viele vom
Capitäne Don Genealo Bolea, ihrem Oheime, empfangen habe.
Sevilla, den 12. September 1630.
Carlo Grimaldi.

„Der Mann,“ sagte Antonio, „von welchem der Brief kommt, ist ein
ungemein ordentlicher und sehr reicher Mann, und der, an den der Brief
gehört, ist es nicht minder.“
„Es ist mir genug,“ erwiederte Louise, „daß ich es aus Ihrem Munde
höre; aber ist die Sache deßhalb nicht minder unangenehm? Was denkt
der Mann? Er weiß, er schreibt mir da selbst, daß mein Oheim erst
kommen wird, daß ich folglich allein hier bin, und setzt mir doch nur
vierzig Tage. Wer steht mir gut, daß der Capitän bis dort angekommen
ist? wahrhaftig, eine Verdrießlichkeit um die andere kommt mir über [S
den Hals.“ Nun glaubte Antonio, sein neuliches Versehen ohne die
mindeste Gefahr wieder gut machen zu können, und sprach: „Beste
gnädige Frau, lassen Sie dem Manne seine Grillen, und nehmen Sie die
Zahlung gar nicht an. Sie sagen mir, was Sie beyläufig brauchen, ich bring
es herüber; Sie stellen es mir nach Belieben zurück, und somit gut.“
„Es ist mir wirklich eine große Gefälligkeit,“ sagte Louise, „wenn Sie
mich aus dieser Verlegenheit bringen. Sechs tausend Thaler sind mir
genug.“ „Mit Vergnügen!“ fuhr Antonio fort; „Sie schicken morgen früh
Ihren Mogrobejo, mit einem Paar Zeilen zu mir hinüber, und empfangen
die Summe.“ „Ich bin Ihnen wirklich Dank schuldig,“ sagte Louise,
drückte ihm die Hand, und hieß ihn auf das Zwischenspiel nicht
vergessen. Er ging fort, und so innigst vergnügt sie war, daß er an die
Angel gebissen, so vergnügt war auch er, daß er sein Capital auf so
angenehme Zinsen, wie er hoffte, anlegen konnte. Er wartete den
nächsten Morgen nicht einmahl ab, daß Mogrobejo das Geld [S
abzuhohlen komme, sondern machte es zusammen, und schickte
Leonardo mit seinem Morgengruße und der Summe hinüber, ohne zu
bedenken, wie viel Gefahr das bare Geld in den Händen eines Poeten
laufe. Louise war über seine Pünctlichkeit ganz entzückt, und drückte
Leonardo ein ansehnliches Trinkgeld in die Hand. Auch ließ sie Antonio
melden, daß sie die Vorstellung des Zwischenspiels denselben Abend in
ihrem Hause wünsche; daß sie alle Anstalten dazu treffen werde, und ihn
unausbleiblich zu sehen hoffe. Nun lud sie auch die zwey Mitschwestern
bey ihrer neuen Unternehmung, und ihre Mutter zum Schauspiele. Es war
Abend; der Saal war prächtig beleuchtet, und mit dem angenehmsten
Wohlgeruche durchräuchert, und der Genueser war mitten unter den
Damen so gelagert, daß er bequem mit jeder sprechen konnte.
Es ward Stillschweigen gebothen, und drey Tänzer traten mit
Guitarren auf, und spielten eine sehr artige Sarabande. Als diese zu Ende
war, erschien Leonardo allein, in einer seltsamen Tracht, die er sich [S
selbst aus den buntesten Stücken Stoff zusammen gekünstelt hatte, und
sprach einen Prolog, in dem er den Zuhörern ganz sanft unter die Nase
rieb, daß er der Verfasser sey; daß er dieses Stück Arbeit, ohne zu
prahlen, für eines der witzigsten und originellsten Producte seines Geistes
halte, und daß es den Titel führe: Der Commissarius von Figueras.

DER
COMMISSARIUS VON FIGUERAS.
E I N Z W I S C H E N S P I E L.

ERSTER AUFTRITT.
(Der Commissarius mit einem langen weißen Stabe, einem
schwarzen Unterkleide, einem Mantel darüber, und
einer gefärbten Kräuseschlafhaube. Der Wirth.)
[S. 119]
Commiss. Ja werther Freund, dem Geschäfte hat
Der Richter von Toledo mich gesandt,
Daß ich es schlichten soll mit allem Ernst.
An diesem edlen Hofe strotzen ja
Von Ungeziefer alle Fugen; ich
Bin nun gekommen sie zu reinigen.
Der weise Rath hat mich hierher gesandt
Von Madrits Ufern —

Der Wirth. — — Ja, Herr Commissär,


Die Plage, die der span’sche Boden trägt,
Ist ärger noch, als einst Ägyptens Fluch.

Commiss. Laß er die Sorge mir, mein edler Wirth,


Obschon mein Geist es ahndet, das Geschäft
Sey groß und mühsam; drum bereit’ er mir
Zwey Flaschen Malaga und weißes Brot.
Doch stille! was für Lärmen macht man hier?

(Ein Alguazil tritt ein, und schleppt einen Stutzer, mit


einem Hute voll Bänder, Schleifen, und Federn mit
sich.)

Der Wirth. Was ist das?

Commiss. — — — Meine Alguazils sinds.

(Sie bringen den Gefangenen zum Verhör.)


[S. 120]
Alg. In einem Straßenwinkel fanden wir,
Hochedler Herr, den Narren hier; er gab
Ein Zeichen auf dem prächtigsten Balcon,
Auf dem ein Affe saß mit zwey Duennen;
Der Affe knackte fleißig Nüsse auf,
Und seine Frauen fraßen ihm den Kern;
Der Bursche hätte gerne mitgenagt,
Denn seine Zeichen waren voll Begierde —
Was quält den Burschen aber wohl, als Eßlust?
Wir hätten ihm sein tolles Spiel gegönnt,
Doch trieb er’s weiter bis zur Raserey.
Er sprang von einem Haus ans andre hin,
Und wo ein Kätzchen in dem Fenster saß,
Da macht’ er Sprünge, wie ein junger Hund,
Und schwang den Zopf, wie Budel ihren Schwanz.
Die Kätzchen strichen mit den Pfötchen sich
In süßem Selbstgefallen — Bart und Kopf,
Und warfen ihm für seine Gaukeley
Flor, Blumen, Federn, Band und Handschuh zu.
Er las es gierig auf, wie Haberkorn
Die jungen Hühner, und sprang weiter fort.

Commiss. Wer bist du? sprich!

Stutzer. — — Ich bin des Glückes Sohn,


Und wenigstens sein allernächster Freund.

Commiss. Du bist ein Narr, drum ist das Glück dir hold;
Drum hängest du den Schild der Narrheit aus.
Doch sprich, was soll wohl dieser tolle Hut?

Stutz. Des Ruhmes, der mir war, Posaune seyn.

Commiss. Sie bläst sehr laut. Wo ist der Zierath her?


Hast du vielleicht San Jago ausgeplündert?

Stutz. Von sieben Damen sind es die Trophä’n.

Commiss. Ich glaub’ es gern, daß du sie mit Gewalt


Commiss. Ich glaub es gern, daß du sie mit Gewalt
Errungen hast.

Stutz. — — Die Liebe gab sie mir.

Commiss. Du lügst; wer liebet einen Narren wohl?

Stutz. Die Damen. O Herr Commißär,


Sie scheinen selbst für Weiber gut bestimmt.

Commiss. Verwegner! wer hat dich gelehrt, so frech


Dem Richter von Toledo zu begegnen,
An dessen Statt ich hier bin? Doch Geduld,
Hier hast du ein Geschenk, das er dir schickt,
Und das dich immerfort bezeichnen soll.

Stutz. Wie? Was?

Commiss. — — Du hast der Kerne gar


Zu viel gegessen; faste nun im Thurm.

(Sie setzen ihm einen carmoisinrothen [S. 122]


Frauenzimmerhut auf, und stoßen ihn gewaltig in die
Scene. Der zweyte Alguazil tritt mit einem Gecken, der
sich schön zu seyn wähnt, ein.)
Alg. Hier ist ein andrer.

Commiss. — — Was ist sein Vergehen?


In was hat er gesündigt? nur heraus!

Alg. Er meint, er wäre schön.

Geck. — — Bin ich es nicht?


Ach tödtet mich doch nicht mit diesem Wort!

Commiss. (indem er die Brille aufsetzt.)


Nach Recht und Pflicht! Man hat ihn hoch getäuscht,
Mein lieber Freund! denn seine Nase war
Für zwey Gesichter wenigstens bestimmt;
Sein Mund ist wie ein Thor gestaltet, und
Die Nasenlöcher sind geschlitzt, wie Augen;
Sein Haar ist wie des Blutgerichts Fahne;
Sein Aug’ ist stumpf und seine Höcker hat
Er selbst vielleicht noch nie bemerkt. Mein Freund,
Wenn er sich schön glaubt, hat er gar nicht Unrecht.

Geck. Herr Commissär, Sie sprechen nicht nach Recht;


Der Richter muß nicht nur das Eine sehen.
Belieben Sie nur diese weiße Hand,
Die sich so zärtlich küßt,
(er küßt sich selbst die Hand)
auch zu betrachten.

Alg. Laß er doch sehn!


(er küßt ihm auch die Hand)
Es schmeckt nicht sonderlich.

Commiss. Wie nennt er sich?

Geck. — — Don Fenix.


Ach wie schön klingt schon der Nahme!

Commiss. — — Ja, ganz sonderbar


Bist du vom Kopfe bis zum Fuß; doch sehet
Auch nach, was er in seinen Taschen hat.

(sie durchsuchen die Taschen.)


[S. 124]

Alg. Ein Büchschen! — — sieh! voll Schminke, Spiegel,


Kamm.

Geck. Ach, laßt mir das! nehmt lieber mir das Leben!

Alg. Hier noch ein Zettel — seht, noch mehrere,


Und sonderbare Zeichen drauf gekritzelt.

Commiss. Ein Mittel, das die Hände weißer hält, —


Die Stirn zu glätten, an den Fingernägeln
Die weißen Flecken zu vertreiben, Lippen
Und Wange sich zu röthen. —

Geck. — — Alles trifft


Genau so ein.

Commiss. — — Schon gut! vollkommen reif


Bist du fürs Tollhaus. Thuet eure Pflicht.

(Sie setzen ihm eine Narrenkappe auf, und der erste


Alguazil tritt mit einer Dame ein.)
[S. 125]
Alg. Am Spiegel fanden wir die Dame hier.
Sie machte sich die allertiefsten Knixe,
Und — hört! erklärte selber sich die Liebe.

Dame. Ich liebe mich vor allen; niemand soll


Mir dieses Herz entreißen, denn es schwor
Die Treue mir.

Commiss. — Fürwahr ein seltsam Weib!


Die Weiber sind sich selber sonst nicht treu.
So treten Sie doch näher, Frau Narcisse!
Wie war Sie wohl so in sich selbst verliebt?

Dame. Ich konnte länger mir nicht widerstehen;


An allen schönen Gaben fand ich mich
So reich; jung war ich, hatt’ ein schön Vermögen;
Mein Herz errieth gar bald den stillen Gram,
Der mich verzehrte, kam auf halben Weg
Entgegen mir, in feuriger Umarmung
Gestand ich stotternd ihm, was ich empfand.
Nun ist es mein Geliebter, weichet nimmer
Von mir, eilt jedem Wunsche schnell zuvor,
Und wird mich lieben, treu bis in den Tod.

Commiss. Ihr seyd ein glücklich Weib; denn Eifersucht


Wird euch gewiß nicht martern.

Dame. — — Ach, mein Herr,


Sie foltert mich nur allzu oft,
Denn manchmahl hebt es doch den scheuen Blick
Auf — —

Commiss. — Eine Dame?

Dame. — — oder einen Mann,


Und quält mich.

Commiss. — — Ja, das glaub’ ich euch,


Und rath euch, keines Menschen Sohn’
,
Mit eurer Liebe jemahls zu beglücken.
Die Kappe!

(Sie erhält die ihrige, und der zweyte Alguazil tritt mit [S. 126]
einem Poeten, der Bücher ausschreibt, ein.)
Der Wirth. — Seht, da kommt ein andrer Narr.

Alg. Wir haben ihn ertappt, daß er gar frech


Um Verse bettelte; und als man ihm
Nichts gab, bestahl er kühn die Bücher selbst.

Commiss. Nehmt ihm doch sein Gewehr, die Feder ab!

Poet. Mein Herr, sie dienet nicht statt Waffen mir;


Ich schneide Käse nur und Brot damit.

Commiss. Nun gut! so sprich, was hat dich wohl


veranlaßt,
Die Dichter anzubetteln, die fürs erste
So karg sind, daß sie ihren Geistesschwamm
Wohl selber drey Mahl pressen, über dieß
Nicht schenken dürfen, was Apollo jedem
Zum Fruchtgenuß auf die Person verlieh?
Doch welche, nenne sie, hast du bestohlen?

Poet. Zu nennen weiß ich sie wahrhaftig nicht;


Das war mir gleich, und ich bekenn’ es gern,
Ich suchte meistens in der Nacht die Taschen.

Commiss. Und fürchtetest du nicht, man werd’ am Tag’


Erkennen, daß es fremde Habe sey.

Poet. Man läßt es niemahls, wie es war.

Commiss. Du bist ein großer Mann. Die Kappe! Nimm,


Hier dieser Lorbeer prang’ auf deinem Haupt!

Poet. Ein Lorbeer?

Commiss. — — Ja, doch ist er nur entstellt,


Wie Verse, die du guten Dichtern stahlst.
Sie kleidet ihren Mann.

Poet. — — Doch nehmet mir


Die Schelle; mir genügt bescheidner Ruhm
Die Schelle; mir genügt bescheidner Ruhm.

Commiss. Mein edler Freund, durch diesen schönen Zug


Hast du fürwahr der Schellen — zwey verdient.

(Man führt ihn mit gebundenen Händen ab; er scheint [S. 128]
in Begeisterung. Der erste Alguazil führt einen Ritter
ein.)

Ritter. Mein Herr, ich bin ein Held.

Commiss. — Wer seyd ihr?

Ritter. — — Held, und zwar ein großer.

Commiss. — — Wer hat euch gekrönt?


Wer hat beschrieben, was ihr all’ gethan?

Ritter. Ich selbst.

Commiss. — — Wie nennt ihr euch?

Ritter. — — Don Wunderbar,


Und jetzt quält mich mit euren Fragen nicht!
Ich spreche nur mit Sterbenden und Todten.

Commiss. Wo habt ihr euer Schwert?

Ritter. — — Ihr seyd ein Schroll.


So lange diese Faust noch Nerven hat,
Und diese Nägeln Schärfe, soll kein Schwert
Mich eh’ umgürten. Jene gab mir Gott,
Und dieses ein gemeiner Handwerksmann.

Commiss. Erzählt mir doch, was ihr gethan.

(Der Held drückt durch stumme Geberden aus, daß er [S. 129]
erwürgt, und mit Füßen ertreten.)
Commiss. Was sprecht ihr nicht?

Ritter. — — Was unaussprechlich ist,


Beschreibt man nicht mit Sprache.

Commiss. — — Großer Mann!


Neigt euer Haupt, daß ich euch kröne; tiefer!

(Der Held neigt sich sehr tief; der Commissär setzt ihm die
Kappe auf, und der Held geht unter der Begleitung des
Alguazil mit stolzen Schritten ab.)

Commiss. Wahrhaftig, edler Freund, die Narren sind


So zahlreich hier, daß meine Kappenzahl
Mir nicht auf heute hinreicht; lass’ er mir
Den Schneider kommen, — wenn er nicht ein Narr ist.
Indessen trinken wir vergnügt und klug
Den Malaga, und essen unser Brot.

(Der Wirth und der Commissär gehen ab.)


Nun traten wieder die drey Guitarrspieler auf, und [S. 130]
sangen folgende Weise:

Das ist so der Welten Lauf:


Jeder nähret Grillen;
Einer mutzt den andern auf;
Alle möchten trillen.
Haltet diesem Tadlerchor
Ein Mahl doch den Spiegel vor;
Sie — die Weise waren,
Sehen selber Narren.

Der Vorhang fiel, und die ganze Gesellschaft äußerte ihren Beyfall mit
lautem Händeklatschen. Leonardo, dem es gewaltig schmeichelte, zeigte
sich bald, und erntete sein Lob ein. Besonders überhäufte ihn Louise
damit, und alle ersuchten ihn, bald wieder ein kleines Stück zu verfassen,
was er auch mit Mund und Hand versprach. Louise gab jedem
Schauspieler zwanzig Realen, und Antonio lud sie auf den folgenden Tag
zu sich zu Tische.
Louise war diesen Abend so nachsichtig, daß sie selbst über einen
kleinen Schmatz, den er ihr zu rauben wagte, nicht ungehalten war. [S
Um Antonio mit einer angenehmen Gegenunterhaltung zu überraschen,
beschloß die weibliche Gesellschaft, ihm über acht Tage ein kleines Stück
in demselben Saal’ aufzuführen, das sie schon vorlängst einstudiert hatte,
und dessen Vorstellung nur durch den unvermutheten Tod Don
Fernando’s gehindert worden war. Daß sich Louise die Hauptrolle
vorbehielt, versteht sich von selbst. Der Tag der Vorstellung kam; die
Gesellschaft war schon versammelt, und es fehlte nur mehr Antonio, als
plötzlich Leonardo erschien, und Louisen meldete, daß sein Herr von dem
Präsidenten des hohen Rathes in Geschäften Seiner Majestät abgerufen
worden sey, und daß es ihm ungemein leid thue, eine so vortreffliche
Gesellschaft und Unterhaltung entbehren zu müssen, und daß er ihn
deßhalben mit zweyen seiner Freunde geschickt habe, um mit ihnen dem
Schauspiele beyzuwohnen.
Louise bezeigte ihr Mißvergnügen über seine Abwesenheit, und die
Komödie ward aufgeführt. Die Vorstellung war ein Meisterstück von
Lebhaftigkeit: sie waren alle prächtig, und Louise als Mann gekleidet. [S
Mogrobejo übertraf sich selbst an Munterkeit und Witz. Als sie schon alle
wieder ihre vorige Kleidung anhatten, kam Antonio erst vom Präsidenten
zurück, und war äußerst unmuthig, daß er das schöne Schauspiel
versäumet habe, das ihm Leonardo und seine Freunde so reitzend
schilderten. Nur Louise hatte ihr Mannskleid noch nicht abgelegt, um ihn
an der Thür zu überraschen. Es ließ ihr so wunderschön, daß Antonio den
holden Knaben nicht genug angaffen konnte. Louise bedauerte sehr, daß
sie ihn vermißt habe, und gab ihm endlich ihr Wort, daß sie ihm wieder
über acht Tage, in der Quinta des Connetable, ein anderes Stück geben
wolle; nun treffe aber wieder ihn die Reihe, das Fest anzuordnen. Sie
wußte wohl, daß er sich prächtig einstellen werde, und er nahm auch den
Befehl mit Freuden an. Sie würden dann alle bey ihm ein kleines
Abendschmäuschen halten, sagte er, und sie solle ihm nur auf einem
kleinen Zettel anmerken, was sie zum Schauspiele vonnöthen habe. Er er
hielt bey dem Besuche am nächsten Abend’ ein vollständiges [S
Verzeichnis von Kleidungsstücken von sechs Personen: das Stück, das
Mogrobejo in der Eile verfaßte, spielte in der Heldenzeit, und die
Personen waren alle Prinzen und Prinzessinnen. Louise spielte einen
jungen Helden, dem die Sclaven eine reiche Beute nachtragen. Am Ende
des Zettels waren Federn, Ringe und falscher Schmuck nur hingeworfen.
Louise hatte vorsetzlich falscher Schmuck geschrieben, weil sie gar nicht
zweifelte, daß er wenigstens für ihre Person echten ausborgen würde.
Antonio mußte freylich täglich vor dem Rath’ erscheinen; indessen war
doch aller Anschein, daß er denselben Tag würde los kommen können,
und ließ denn den Saal, Erfrischungen, Abendschmäuschen, nebst allem
übrigen, was zum Feste gehört, bereit halten.
Zwey Tage vor dem, der zum Schauspiele bestimmt war, schickte der
Genueser die ganze Guarderobe. Louise hatte vermuthet, daß er
höchstens die schönsten Kleider, die man allenfalls bey einem Trödler [S
bekäme, ausborgen würde; er hatte aber zu ihrer allen größtem
Erstaunen alles ganz neu verfertigen lassen. Alles war von Atlaß,
Sammet, Taffet, oder anderem Seidenstoffe, und reich mit Gold und
Silber verbrämt. Federn, Schnällchen, Blumen, Ketten und Ringe waren in
Überfluß, und für Louisen versprach er den Schmuck, der sie zieren sollte,
des Abends selbst mitzubringen. Er brachte auch wirklich den Schmuck
mit, den ihm seine selige Gattinn hinterlassen hatte, und erklärte mit
einem bedeutungsvollen Lächeln, daß er ungemein neugierig sey, wie
Louisen dieser Schmuck seiner seligen Frau passen werde. Louise
überhäufte ihn diesen Tag mit so vielen Liebkosungen, und wußt’ ihm
dabey doch so sittsam zu schmeicheln, daß er seiner Hoffnung immer
freyeren Spielraum ließ. Zwischen den zwey Tagen, bis zur Aufführung
des Schauspiels, war unsere Gesellschaft gar nicht müßig, und Theodore
machte Anstalt, daß in den beyden Nächten alles, was von Bedeutung im
Hause wäre, aufgeräumt, und anders wohin in Sicherheit gebracht [S
würde. Der Tag des Schauspiels erschien; Antonio’s Bediente waren
schon in der Quinta, und bereiteten alles. Der Genueser war, um Zeit zu
gewinnen, auf einem Maule in den Rath geritten. Theodora, ihre Töchter,
Banuelos und Mogrobejo setzten sich in ihre Kutsche, nahmen allen
Schmuck, und die ganze Guarderobe mit sich, und fuhren, anstatt zu
Alcalathore hinaus, in ein kleines Häuschen, in Quartiere Santa Barbara,
das Mogrobejo vorläufig gemiethet hatte. Hier nahmen sie augenblicklich
andere Kleider; Mogrobejo führte den Wagen zu einem Sattler, um sein
Äußeres so geschwind’ als möglich ändern zu lassen. Die Pferde wurden
auch heimlich untergebracht; und um noch sicherer zu seyn, theilte sich
unsere Gesellschaft in die ursprünglichen zwey Parteyen; die eine begab
sich nach Illescas, und die andere nach Valdemoro. Sobald unser
Genueser von dem Rath’ abgefertigt war, trappte er frohes Muthes, und
in den schönsten Aussichten von der Welt, der Quinta zu. Er fand
niemanden, als seine Bedienten, und die drey Köche, die er bestellt [S
hatte, fragte nach den Damen, und als er hörte, daß sie noch nicht da
wären, war er sehr unruhig; denn er dachte nichts anderes, als daß ihnen
irgend ein Unglück begegnet seyn dürfte. Er stieg denn wieder auf seinen
Maulesel, stieß ihm mit den Knien fleißig in die Lenden, und kam sehr
geschwinde bey Louisens Haus’ an. Er fand die Wohnung gesperrt,
erkundigte sich bey den Nachbarn, und vernahm, daß die ganze Familie
schon abgefahren sey. Er kam nun auf den Gedanken, daß sie ihre
Freundinnen abgehohlt haben würden, und so blieb ihm nichts übrig, als
in der größten Verlegenheit, daß nun er vielleicht auf sich warten ließe,
nach der Quinta zurück zu eilen. Er fand aber noch niemanden, und
wußte nun nicht, was er von diesem langen Ausbleiben denken sollte. Er
wartete bis neun Uhr in der peinlichsten Ungeduld, und es war noch
niemand zu sehen und zu hören. Endlich trat ein Bedienter ein, und gab
Antonio einen Brief, den ihm, wie er sagte, am Thor’ ein Unbekannter [S
gegeben habe. Er brach ihn zitternd auf, und las:
„Bester Antonio, seyn Sie nicht bekümmert, daß Sie Ihre
Nachbarinnen nicht finden; sie sind an einem Orte, wo man sie unmöglich
finden kann. So viel für jetzt.“
Der Genueser stand da, wie vom Donner gerührt; er gerieth endlich in
fürchterliche Wuth, und schwor allen, wenn sie ihn betrogen hätten, Tod
und Verderben. Seine Bedienten mußten ihn wie einen Tieger bändigen,
brachten ihn in den Wagen, und führten ihn nach Madrit. Auf dem Wege
besänftigte er sich wieder etwas, und schloß aus den letzten Worten des
Briefes: „So viel für jetzt,“ daß es vielleicht nur ein Scherz sey, und daß
sie ihn vielleicht in seinem Hause erwarteten; er war aber nur zu bald
vom Gegenteile überzeugt. Louisens Wohnung war auch noch versperrt,
und er wartete nun am Hausthore bis lange nach Mitternacht, ob er ihre
Ankunft nicht erwarten könnte; aber niemand kam. Er schlief die ganze
Nacht nicht eine Secunde, und ließ sich mit Tages Anbruche bey Louisens
Hausherrn, der noch im Bette lag, melden. Von diesem vernahm er [S
denn, daß ihm Louise Tages zuvor die Schlüssel der Wohnung zurück
gestellt, und ihm gesagt habe, daß sie sich Geschäfte halber nach Toledo
begeben habe.
„Sie hat Ihnen aber ja die tausend Reale bezahlt,“ sagte Antonio.
„Was für Reale?“
„Die Jahresmiethe für die Wohnung.“
„Die Jahresmiethe? Die Wohnung war ja nur auf zwey Monathe
gemiethet.“
„Wie sagen Sie?“ schrie Antonio, und war im ganzen Antlitze
scharlachroth.
„Ich bin aber auch für diese zwey Monathe nicht bezahlt,“ sagte der
Hausherr, „und Sie werden belieben, mich zu bezahlen.“
„Wer? Ich?“ schrie Antonio, und erstickte beynahe vor Wuth.
„Ja, Sie,“ sagte der Hausherr; „Sie werden doch nicht läugnen, daß
die Dame bey Ihnen Gelder stehen hat; daß dieß hier Ihre schriftliche
Anweisung ist?“
„Diebe! Mörder!“ schrie Antonio, und packte den Hausherrn bey der
Brust, faßte sich aber doch gleich wieder, und sagte: „Vergeben Sie [S
einem unglücklichen Manne, den man zum Bettler gemacht hat. Man hat
Sie betrogen, wie mich. O ich Thor! ich Rasender! ich Narr! ich alter
Sünder,“ — bey jedem dieser Titel schlug er sich mit geballter Faust vor
die Stirn — „nun bin ich ein Bettler, bin auf ewig unglücklich.“
So weit war es eben nicht gekommen; indessen hatte ihn die schöne
Wittwe, die nun wieder Jungfrau geworden war, nebst den sechs tausend
Thalern, die ihr Grimaldi angewiesen hatte, um mehr als zwölf tausend
Escudo’s geprellt. Der arme Antonio eilte zu dem Richter, schickte die
Alguazils nach allen zwey und dreyßig Winden aus; aber alles
Nachsuchen war vergebens. Nach acht Tagen hatte man noch nicht die
geringste Spur, und nun erhielt er, um ihn vollkommen zu Verzweiflung zu
treiben, die Nachricht, daß sein einziger Sohn zu Genua auf den Tod läge,
und ihn um den letzten väterlichen Segen bitte. Er reiste denn mit dem
festen Vorsatz’ ab, nach seines Sohnes Tod’ oder Genesung eine [S
kleine Reise durch die ganze Welt zu machen, um die Schlange irgend wo
zu finden und zu zertreten.
DRITTE SPAZIERFAHRT.

Da nun auch dieses Abenteuer glücklich abgelaufen war, fingen die


beyden andern Schwestern ihr Werk desto freudiger an. Constanze war
älter, folglich gebührte ihr der Rang. Louise und Feliciane trugen ihnen
allen Beystand an, den sie ihnen leisten konnten; besonders aber den
Wagen, der ihnen vor allem unentbehrlich war. Die Sevillanerinnen waren
nun zu Valdemoro, und die andern zu Illescas: dort vereinigten sie sich
aber wieder, und Constanze stieg allein mit der alten Banuelos und
Mogrobejo in den Wagen, der unterdessen ganz ein anderes Ansehen
bekommen hatte; auch hatte sie andere Pferde und einen andern
Kutscher. Mogrobejo hatte, um sich unkennbar zu machen, seinen[S
Spitzbart länger wachsen lassen, und trug ehrwürdige Augengläser auf
der Nase. Auch Constanze hatte die Person schon ausersehen, die sie mit
ihrer Begünstigung glücklich machen wollte. Louise hatte ihr den
Traueranzug geschenkt, und diesen wählte sie auch zu ihrer
Unternehmung, theils, weil er ihr sehr gut ließ, theils, weil die
Wittwenrolle mit dem geringsten Aufwande gespielt werden konnte,
theils, weil sie sich in einen Plan einließ, nach dem sie durchaus
scheinheilig seyn mußte. Sie kamen wohl behalten in Madrit an, und
bezogen eine Wohnung in dem Stadtviertel de la Merced. Die Person, auf
welche ihre Absicht gerichtet war, war einer der reichsten Pfarrer am
Hofe, ein gelehrter Priester und Doctor der Theologie. Wir wollen ihn um
gewisser Ursachen willen nicht nennen, sondern ihn immer nur den
Doctor heißen. Seine Pfarre trug ihm sehr viel ein, obschon er ein großes
Vermögen von seinem Vater geerbt hatte, und von zwey Bischöfen
jährlich mehr als zwey tausend Escudo’s bezog. Er hatte also jährlich[S
über viertausend Escudo’s zu verzehren, und war doch dabey der größte
Filz unter der Sonne. Das Hausgesinde des Doctors bestand aus einer
Schwester, die schon lange über die Jahre der Anfechtung hinaus war,
und die er schon lange zur Nonne gemacht hätte, wenn sie es nicht in
der Hoffnung einer reichen Erbschaft weislich hätte bleiben lassen; einer
Haushälterinn, einem Studenten, der ihm Gesellschaft leistete, und einem
alten Maulesel. Constanze erschien täglich mit der sittsamsten Miene, und
einem langen Rosenkranz’ am Arm’, in der Messe; die Duenna und der
Escudero begleiteten sie. Eines Tages ging sie nach der Messe auf den
Kirchhof, der an das Gotteshaus stieß, wandelte auf und nieder,
betrachtete alles ringsum sehr aufmerksam, und sprach leise mit dem
Escudero. Unterdessen stand der Pfarrer immer am Fenster der Sacristey,
und hätte gar zu gern gewußt, was sie mit solcher Aufmerksamkeit
betrachte. Sie begab sich aber sittsam in den Wagen, und fuhr ab.
Den nächsten Morgen kam sie wieder zur Messe, ging wieder auf [S
den Kirchhof, und begnügte sich nicht damit, daß sie ihn sehr
aufmerksam betrachtete, sondern Mogrobejo mußte auch einen Theil
desselben schrittweise abmessen. Der Pfarrer hatte wieder aus dem
Sacristeyfenster zugesehen, und konnte nun sein Verlangen, dieses
Räthsel aufgelößt zu sehen, nicht länger unbefriedigt lassen; er ging
hinaus, machte ihr eine artige Verbeugung, und fragte sie womit er ihr
dienen könne. „Ich sehe,“ sagte Constanze mit niedergeschlagenen
Augen, „daß Sie die vornehmste Person in dieser Kirche sind. Mein
Escudero mußte mir hier diese Stätte der gottseligen Ruhe abschreiten,
damit ich sehen könne, ob auch Raum genug wäre, meine Absicht hier
auszuführen. Wenn es Ihnen nicht ungelegen wäre, würd’ ich Sie bitten,
mich in die Kirche zu führen, um Ihnen meine Absicht ausführlich
erklären zu können.“ Er führte sie in eine kleine Seitenkapelle, die aber so
schlecht mit Geräthe versehen war, daß sie sich auf einige Altarpölster,
und er in einen Beichtstuhl setzen mußte.
„Mein hochwürdiger Herr,“ begann sie, „ich bin aus Sevilla, von [S
adeligen Ältern geboren; mein Vater hieß Don Lope de Monsalva, meine
Mutter Donna Mencia de Sahabedra, und ich, ihre einzige Tochter, heiße
Donna Rufina de Monsalva und Sahabedra. Meine Mutter nahm mir Gott
sehr früh, und mein Vater, der noch ein sehr junger Mann war, warf sein
Augenmerk auf eine Dame derselben Stadt, und wollte sich mit ihr
verbinden; sie hatte aber zwey Brüder, die ihre Schwester gar zu gern
geerbt hätten; sie setzten sich heftig entgegen, und drangen durchaus
darauf, daß sie Nonne werden sollte. Sie war meinem Vater sehr geneigt;
sie fanden Gelegenheit, sich öfters heimlich zu sprechen, und kamen
endlich überein, daß sie sich heimlich wollten trauen lassen. Sie thaten
es, und setzten ihre heimlichen Zusammenkünfte fort; ich war die Frucht
ihrer Liebe. Nun entdeckten die Brüder plötzlich durch eine treulose Magd
das ganze Geheimniß, stellten meinem Vater heimlich nach, und —
tödteten ihn. Ich war nun eine Waise, und ohne alles Vermögen; [S
niemand nahm sich meiner an, als eine Muhme, die mich in das
Nonnenkloster San Leander zur Erziehung gab, wo ich auch bis in mein
sechzehntes Jahr blieb. Damahls erst fing mein Glück zu dämmern an. Mit
einer Flotte aus Indien kam ein ansehnlicher Cavalier an den Hof; er war
sehr reich, und hatte von einem Vetter meiner Muhme, bey der ich nun
im Hause wohnte, ein Empfehlungsschreiben mit sich. Er besuchte sie
öfters, und sah auch mich bey dieser Gelegenheit. Er erkundigte sich, wer
ich wäre; meine Muhme erzählte ihm die unglückliche Geschichte meines
Vaters, und er gewann eine solche Neigung zu mir, daß er förmlich um
mich warb. Binnen vierzehn Tagen war ich ihm angetraut, und er gab mir
zur Morgengabe zwanzig tausend Escudo’s; sein ganzes Vermögen aber
beträgt über hundert zwanzig tausend Ducaten. Wir lebten sechs Jahre
mit einander, in welcher Zeit wir gar kein Kind mit einander hatten.
Endlich starb der gute Mann, und machte mich zur Erbinn des ganzen
Vermögens: nur vierzehn tausend Ducaten bestimmte er zu einer [S
prächtigen Kapelle, die ich in dieser Stadt bey irgend einer Kirche bauen
lassen sollte. Er bestimmte aber nur die Summe, und räumt es übrigens
ganz meiner Willkür ein, wie ich sie bauen lassen wollte. Ich denke nun
es so einzurichten, daß vier Kapelläne mit einem jährlichen Einkommen
von zwey hundert Ducaten, und einer, dem die andern untergeben seyn
sollen, mit drey hundert dabey angestellt werden. Ich will sie auch nicht
an diesen Kapellendienst allein binden; denn warum sollt’ ich ehrwürdige
Väter hindern, ihr ohne dieß geringes Einkommen, das sie ohnehin
meistens auf Almosen verwenden, noch in etwas nebenbey zu
vermehren. Ich bin nun vierzehn Tage hier, und habe alle Kirchen
besehen, aber hier nach meiner Meinung noch den besten Platz
gefunden. Man könnte unter der Kapelle die Gruft anbringen, was
ungleich prächtiger lassen dürfte, als der Kirchhof. Ob es mir nun erlaubt
seyn werde; ob mir die Stadtobrigkeit, oder der geistliche Rath nicht
entgegen seyn werden, wünsche ich jetzt aus Ihrem Munde zu [S
hören.“
„Dafür lassen Sie mich sorgen, gnädige Frau!“ antwortete der Pfarrer
voll Feuer, und sah sich schon im Besitze von drey hundert Ducaten. „Das
wäre schön, wenn der geistliche Rath die Erfüllung frommer
Vermächtnisse hindern wollte! Wie wollt’ er das? Wie könnt’ er das? Jeder
Platz gehört Gott, um so viel mehr ein Kirchhof, als ein eigens geweihter
Ort. Und was gingen die Stadtobrigkeit geistliche Dinge an? Sie mag ihre
profane Nase in andere Dinge stecken, mag Betriegern und
Betriegerinnen auf die Spur zu kommen suchen; aber unsere heiligen
Sachen gehen ihr nichts an. O gnädige Frau! Gott hab’ Ihren seligen
Gemahl selig! sein Werk ist um desto verdienstlicher, da er dadurch in
einer so verdorbenen Zeit ein heldenmüthiges Beyspiel des standhaften
Christenthums gibt. Säumen Sie auch nicht, seinen frommen Wunsch zu
erfüllen, damit wir ihn nicht aufhalten, wenn seine Seele etwa bis zur
völligen Herstellung noch etwas zu leiden hätte.“
„Ich weiß aber noch nicht,“ sagte sie, „ob wir hier das volle Maß, [S
das ich gewünscht hätte, heraus bringen werden.“
„Wollen sie denn Euer Gnaden gar so groß bauen?“ sagte der Pfarrer.
„Wie viele Schritte haben Euer Gnaden angeschlagen?“
„Sechzig in die Länge, zwey und dreyßig in die Breite.“
Nun fing der leibige Pfarrer augenblicklich an, wie ein fettes Leichhuhn
über die Gräber fortzutrippeln, und den Raum mit kurzen Schritten
abzumessen. „Mehr als zu viel!“ schrie er endlich; „es gibt noch ein
Beinhaus, und ein kleines Leichenbehältniß. Wir kriegen aber doch auch
ein Thürmchen, gnädige Frau? Wir haben eine überflüssige Glocke, und
irgend eine andächtige Seele wird uns es auch nicht an einer Uhr fehlen
lassen.“
„Um meines seligen Mannes Wunsch ganz zu erfüllen,“ sagte
Constanze, „wird es mir nicht zu viel seyn, auch diese Kleinigkeiten aus
meinem Vermögen zu bestreiten, das nach meinen Bedürfnissen ohne
dieß viel zu groß ist. Ich gestehe es Ihnen auch, hochwürdiger Herr [S
Pfarrer, daß es mir in so weit wirklich zur Last ist, als ich es nicht weiß,
was ich damit anfangen soll. Übrigens habe ich noch eine Bitte an Sie.“
„Sie befehlen, gnädige Frau! worin kann ich dienen?“
„Ich wünschte sehr, daß Sie es auf sich nähmen, meinen Bau gegen
alle Hindernisse zu schützen, mir erfahrne Leute zu dem Baue selbst
vorzuschlagen, und endlich — thun Sie es um meines seligen Mannes
willen — nehmen Sie dann die Oberaufsicht über die vier Kapläne an.“
„Mit Freuden,“ antwortete der Pfarrer; „zu was mich Gott in seinem
Dienste rufen will, dazu bin ich auch bereit. Sie haben mit mir zu
befehlen; und da Sie ein frommes Werk unternehmen, so bin ich Ihnen
gewisser Maßen Gehorsam schuldig.“
Sie wären nun über die Präliminarien einig gewesen. Sie sagte dem
Pfarrer ihre Wohnung; er besuchte sie sehr emsig, und befahl auch seiner
Schwester, sie zu besuchen, deren Liebe Constanze augenblicklich zu
gewinnen wußte. Das Erste, was sie that, war, daß sie dem Pfarrer [S
ihres Mannes Testament zeigte, und ihn versicherte, daß sie nun in
einigen Tagen thätig Hand ans Werk legen werde.
Sonntags Abends kam sie mit ihrer Duenna und dem Escudero in der
Pfarre an, um der Schwester des Pfarrers den erhaltenen Besuch zu
erstatten. Sie ward mit allem, was Küche und Keller vermochten,
bewirthet; und als sie mit einbrechender Dämmerung wieder nach Hause
fahren wollte, bath sie der Pfarrer, noch ein wenig zu bleiben, und der
Sitzung einer kleinen Akademie beyzuwohnen, die er aus Liebe zu den
Wissenschaften und der Musik, in seinem Hause, mit Hülfe einiger
Freunde errichtet hatte. Constanze nahm die Einladung unter dem
Bedingniß’ an, daß sie und seine Schwester ungesehen zuhören könnten.
Das war ausführbar, und er führte sie an ein Fenster mit einem Vorhange,
aus dem sie in den Saal sehen konnten, der auf eine merkwürdige Art
zubereitet war. Er war ganz mit Tannencisten geziert, und mit Sträußen
von Wiesen- und Gartenblumen behangen; oben am Saale standen [S
drey lederne Stühle an einem Schreibtische, und weil es schon dunkel
war, begann man rings um den Saal die messingenen Wandleuchter
anzuzünden. In der Mitte war ein Hängeleuchter, auf dem drey bis vier
Altarkerzen brannten. Es währte nicht lange, so erschienen die
Akademiker. Der erste war der Pfarrer selbst, der die Gesetze der
Akademie, auf einer Rechentafel geschrieben, trug; der zweyte war der
Sacristeydiener, der in den Nebenstunden kleine Predigten verfaßte; der
Cantor und sein Bruder, der bey einem Sachwalter als Unterschreiber
diente, und welche beyde in dem ganzen Pfarrsprengel das Monopolium
der Hochzeit- und Leichengedichte an sich gerissen hatten; sie
verfertigten auch Neujahrswünsche, kleine Verse für die Zuckerbäcker,
und Inschriften auf die Leichensteine. Nach diesen kam der Kapellan, der
aus Wachs kleine Opferthiere verfertigte, und mit besonderer
Geschicklichkeit verschiedene Figuren aus Pflaumen- und
Aprikosenkernen zu schnitzeln wußte. Indessen, weil sie nicht einig wer
den konnten, unter was für eine der schönen Künste sie seine Arbeit [S
rechnen sollten, hatten sie ihm, ungeachtet seiner Geistlichkeit, einen so
späten Rang angewiesen. Nach diesem kam ein Musicus, der zuweilen
auf dem Chore spielte, sonst aber in den Wirthshäusern seine Kunst trieb,
und Grab- Hochzeit- und andere Lieder verfertigte. Endlich erschien der
Student, der bey ihm im Hause wohnte, und den sie der Tanzkunst
widmeten, weil er geschickt Hunde abzurichten wußte. Um Constanzen
eine rechte Ehre zu erweisen, sagte ihr seine Schwester, daß in der
Gesellschaft noch ein Mitglied für die Baukunst fehle, und daß sie gar
nicht zweifle, ihr Bruder werde den Steinmetz, wenn er sich bey der
Kapelle auszeichnete, unter sie aufnehmen.
Sie begannen nun ihre Arbeit, und jeder legte einen neuen Beweis
seiner Fähigkeit ab. Der Pfarrer eröffnete die Sitzung mit einer
Abhandlung über den Ursprung des Gebeths, in der er nicht undeutlich
vermuthete, daß Gott den ersten Menschen eine Art von täglichem Brevia
rium vorgeschrieben, und ihnen daher auch die Gabe, Geschriebenes [S
zu lesen, eingegossen habe. Der Sacristeydiener ging vor die Thür, weil
der Saal zu ebner Erde war, zum Fenster herein, was eine Kanzel
vorstellen sollte, eine Predigt über die Raupen, die diesen Sommer alle
Bäume im Pfarrgarten verdorben hätten, zu halten. Der Cantor hatte drey
Gedichte gemacht, das eine enthielt die ganze Passion, und die andern
zwey die Geschichte des linken und des rechten Schächers; und diese
drey Gedichte hatte er in der Form eines Kreuzes geschrieben, so, daß sie
einen förmlichen Calvaria vorstellten. Sein Bruder, der Schreiber, las
unmittelbar darnach ein Gedicht zum Lobe des Tabakschmauchens. Der
Kapellan stellte ein neues Schwein dar, das er aus Wachs gemacht hatte,
und die Hälfte einer glücklich abgenommenen Frauenbrust, wovon man
aber das eine eben so gut für ein Schaf, und das andere für die Hälfte
eines Hinterbackens hätte ansehen können. Der Musikus hatte eine neue
Melodie auf das Nachtwächterlied verfertigt, und nun traf die Reihe [S
den Studenten, der seinen Hunden wieder neue Sprünge und Fratzen
gelernet hatte. Nun hatte aber der Pfarrer seinen Akademikern, wie
gewöhnlich, frischen Schinken, geräucherte Ochsenzungen, und kalte
Pasteten auftischen lassen; und da die Hunde des Studenten, da ihr Herr
selbst von des Pfarrers Gnade lebte, immer bey dem gesundesten
Appetite zu seyn pflegten, hatten sie auch jetzt kaum drey bis vier
Sprünge durch den Reif gemacht, als sie sich erdreisteten, mit ihren
profanen Pfoten den Tisch zu besteigen, und unter den Libationen eine
solche Verheerung anzurichten, daß alle Akademiker von ihren Stühlen
aufsprangen, und diese frechen Schüler der Erato aus ihrem Hörsaale
vertrieben. Es war aber leider zu spät, und man mußte sich mit sehr
geringen Überbleibseln begnügen. Die Versammlung ging also sehr
mißmuthig aus einander, und Constanze ging vergnügt nach Hause.
Nun war keine Zeit mehr zu verlieren. Den nächsten Morgen mußte
sich Mogrobejo nach einem vertrauten Freund’ umsehen, der sich für [S
einen erst aus Toledo angekommenen Architecteur ausgeben, und zwey
oder drey Risse von einer Kapelle mit sich bringen sollte. Der Escudero
war scharfsichtig, wie ein Falke, und wendete sich daher an keinen
untüchtigen Mann. Er sollte sich den folgenden Tag, an dem sie vom
Pfarrer Besuch erwartete, einfinden. Der Pfarrer kam; der Baumeister
kam; man vereinigte sich über den Plan, und ließ einen Notar rufen, vor
welchem und zwey Zeugen sich der Baumeister anheischig machte, die
Kapelle binnen einem Jahre herzustellen; dafür verlangte er zwey tausend
Escudo’s im vorhinein; Constanze fand aber diese Summe zu groß, und
erklärte sich, daß sie unterdessen drey hundert Escudo’s geben wollte,
womit sich der Baumeister befriedigte. Sie lud alle über zwey Tage zum
Mittagmahle ein, und da sollte sogleich Hand ans Werk gelegt werden.
Nun schickte Constanze den Escudero noch denselben Abend zu ihren
Freundinnen um den Schmuck, und erhielt ihn auch sogleich in einem
ansehnlichen Futterale von carmoisinrothem Saffian. Sie schickte [S
dasselbe nun unverzüglich zu einen Futteralmacher, und ließ ein so
ähnliches verfertigen, daß man es von dem rechten kaum unterscheiden
konnte. Nun ließ sie den Pfarrer rufen, der sich auch im Augenblicke
einfand. Sie nahmen Stühle, und Constanze sprach: „Herr Doctor, ich
habe acht tausend Escudo’s bey den Fuggern[B] stehen, die ich zu
ansehnlichen Zinsen genieße; mein seliger Mann hat sie aber nur unter
dem Bedingnisse untergebracht, daß er sie einen Monath vor der
Herausbezahlung aufzukündigen habe. In der Verwirrung, in die mich der
plötzliche Tod meines Mannes setzte, hab’ ich nun vergessen, die
Aufkündigung einzuschicken, und bin nun in der Verlegenheit, daß ich das
Geld gerade jetzt, da ich es am nothwendigsten brauche, nicht habe. Ich
sehe mich denn, so schwer es mir fällt, gezwungen, meinen ansehnli [S
chen Schmuck bey einem vertrauten Manne, gegen billige Bedingnisse,
auf einen Monath einzusetzen. Hier ist er,“ sagte sie, indem sie aus der
Estrata ein Lädchen unter dem Überzuge hervor nahm, und dem Pfarrer,
der in seinem Leben nie solchen Schmuck gesehen hatte, die reichen
Geschenke des Mailänders und des Genuesers zeigte.
„Lieber Gott!“ sagte der Pfarrer; „das ist ja über hundert tausend
Escudo’s werth.“
„Nicht doch, Herr Pfarrer!“ sagte sie; „Sie sind ein schlechter Kenner:
der ganze Werth besteht in etwas über dreyßig tausend Escudo’s; und
gerade, weil dieß doch keine Kleinigkeit ist, wünscht’ ich irgend einen
Mann zu wissen, bey dem ich nicht Gefahr liefe; denn bey jetziger Zeit
kann man sich wahrhaftig nicht genug hüthen.“ Während dieser Rede
hatte sie das Futteral wieder versperrt, und in das Lädchen gelegt. Der
Pfarrer wünschte der großmüthigen Dame in allem Genüge zu leisten,
und both sich an, ihr die acht tausend Escudo’s noch denselben Tag aus
seinem eigenen Vermögen einzuhändigen. „Belieben Sie nur,“ sagte [S
er, „eine Schrift wegen Leben und Tod bereit zu halten.“ Constanze nahm
den Antrag mit Freuden an, und zog geschwinde unter dem Überzuge der
Estrata das andere Futteral, welches ebenfalls versperrt war, hervor. Der
Pfarrer nahm es, und wollte forteilen; an der Thür kehrte er aber noch
um, und sagte: „Hören Sie, gnädige Frau, die Baumeister sind Leute, die
immer bares Geld sehen wollen. Damit wir ihn nun nicht abschrecken,
bring’ ich Ihnen lieber gleich die tausend vier hundert Escudo’s an der
Stelle, und des Abends die andern acht tausend, damit Sie dann Ihr Geld
ganz beysammen haben.“ Er hielt auch genau Wort, und Constanze hatte
die ganze Summe in Händen. Der Pfarrer hätte den Schmuck gern seiner
Schwester gezeigt, wagte es aber nicht, zu Constanzen um den Schlüssel
zu schicken, weil es einem Mißtrauen ähnlich gesehen hätte.
So bald die schöne Wittwe das Geld in Händen hatte, machte sie sich
mit ihrer Duenna und dem Escudero nach Lescas auf. Ihrem Hausherrn
schützte sie vor, daß sie das Quartier verlasse, weil es ihr zu [S
melancholisch wäre, und so fuhr sie denn mit allem Geräth’ ab, und
verbarg sich bey ihren Freundinnen so gut, daß sie niemand hätte finden
können. Nun kam der Pfarrer, und hörte, daß seine reiche Gönnerinn eine
andere Wohnung bezogen habe; die Hausleute versprachen ihrem
hochwürdigen Herrn Pfarrer aber, daß sie ihm bis morgen schon sagen
wollten, wo sie wohne. Den andern Tag sehr früh kam er wieder; man
wußt’ es noch nicht: er kam des Abends, und man wußt’ es noch nicht.
Nun begann er erst Argwohn zu schöpfen; er lief nach Hause, und da
seine Schwester darauf bestand, daß er einer Betriegerinn in die Hände
gerathen sey, beschloß er endlich, das Futteral zu öffnen, und sich aus
dieser peinlichen Ungewißheit zu reißen, es kost’ auch, was es wolle. Er
öffnete es denn, und fand anstatt der Diamanten die schönsten und
artigsten kleinen Kieselsteine. Die Pulsen standen ihm stille; seine
Schwester rieb ihm die Schläfe, und hielt ihm ein Riechfläschchen vor. [S
Er erhohlte sich wieder, und lief zu dem Richter: was half aber alles
Nachsuchen des Richters, wenn sich eine von unsern Heldinnen verbarg?
Er fiel in eine Todeskrankheit, von der er sich sehr langsam erhohlte, und
vom Tage des entdeckten Betruges an war er ein Teufel, der das ganze
Haus peinigte, und mit dem es niemand mehr aushalten wollte.
Besonders hatten die Akademiker seinen Unmuth empfunden; denn als
sie ihn denselben Tag besuchten, um wieder eine Sitzung zu halten,
mißhandelte er sie so, daß sie schworen, ihn vor Gerichte zu belangen.

[B] Eine reichsgräfliche Familie, deren Reichthümer in Spanien zum


Sprüchworte geworden sind.
VIERTE SPAZIERFAHRT.

Dorothee, welche nun die Reihe traf, ließ vier Monathe verstreichen,
bevor sie eine neue Unternehmung wagte, damit sich unterdessen das
Gerücht vom Kapellenbaue verlieren möchte. Auch benützte man diese
Zeit, um den Wagen wieder anders zuzurichten, und Kutscher und Pferde[S
zu wechseln. Endlich fand sie es räthlich, in Gesellschaft ihrer Mutter, und
der alten Banuelos zu Madrid einzuziehen. Sie nahmen ihre Wohnung
dieß Mahl zur Abwechslung in dem Martinsviertel. Nach einigen Tagen
begaben sie sich mit dem neuen Escudero, den sie aufgenommen hatten,
unter das Thor von Quadalaxara. Als die jungen Herren, die auf dem
Markte herum spazierten, einen Damenwagen an einem
Kaufmannsgewölbe halten sahen, liefen sie wie Hasen davon, um nicht
etwa in die Verlegenheit zu gerathen, wenn es eine von ihren Bekannten
wäre, aus Artigkeit oder Tändeley ein Geschenk anbiethen zu müssen.
Dorothee ließ sich eine goldener Tabatiere, und etwas von Frauenputz an
den Wagenschlag bringen. Mit einem Mahle kam ein fremder Cavalier, der
erst unlängst aus Andalusien angekommen war, und nun hier den
Zusammenfluß der Madriter schauen wollte, an dem Wagen vorüber. Die
schöne Dorothee fiel ihm auf, und als ein Mann von Welt, machte er ihr
sogleich seine tiefe Verbeugung. Er mochte beyläufig sechs und zwanzig[S
Jahre haben, war klein von Person, aber niedlich gebaut, und ganz fertig,
ein Gespräch mit feinen Wendungen und drolligen Einfällen zu würzen;
dabey war er aber von ungemein verliebter Stimmung, und sein Kopf war
vom Romanenlesen ein wenig angebrannt. Dorothee bemerkte den
raschen Eindruck, den sie auf ihn gemacht habe, und begegnete seinem
Blicke vorsetzlich einige Mahl. Er ward muthiger, trat an den
Wagenschlag, und sagte: „Schöne Unbekannte, diese Waare ist schon
bestellet.“ „Das thut mit leid,“ antwortete Dorothee. „Indessen,“ fuhr der
Andalusier fort, „wenn sie Ihnen gefällt, bin ich bereit, sie mir abhandeln
zu lassen, und will sie als förmlicher Kaufmann in Ihre Wohnung bringen,
die Sie mir zu sagen belieben werden.“ Hiermit steckte er dem Kaufmann,
was die Waare beyläufig werth seyn mochte, in die Hand.
„In der That,“ sagte Dorothee, „wenn ich Sie kennte, würde ich Ihnen
vielleicht mit eben dieser — wie will ich sagen — Freymüthigkeit, oder [S
Zudringlichkeit, wenn Sie wollen, in Ihren Ton einstimmen; so aber“ — sie
hatte sehr gut gesehen, was vorgegangen war — „bleibt mir nichts übrig,
als die Waare wieder dahin zurück zu stellen, von wo ich sie bekommen
habe. Gnädiges Fräulein,“ sagte er, „denn Frau können Sie doch
unmöglich seyn; Sie scheinen ungehalten: seyn Sie es aber nicht. Ich bin
ein Mensch, der niemand auf Erden, am wenigsten aber eine Dame
beleidigen will, und der nur manchmahl den Rechnungsfehler begeht, daß
er meint, man würde seine — ich kann es mit gutem Gewissen nur
Lebhaftigkeit nennen, eben so gerade aufnehmen, als er sie äußert. Bey
uns in Andalusien wird mir so etwas zu Gute gehalten; ich erwartete
denn, daß ich hier, wo ich erst zwey Tage bin, ein anderes Andalusien
finden werde.“
Dorothee merkte nun, daß sie ihren Mann gefunden habe, und fand
es für gut, an der Stelle eine nähere Bekanntschaft zu gründen. Sie frage
denn: „Mein Herr, das ganze Waarenlager werden Sie doch nicht
aufgekauft haben,“ stieg aus dem Wagen, und ging in das Gewölbe; [S
Der Andalusier ihr nach.
Sie ließ sich Federn, Bänder, und Seidenstoff für beyläufig hundert
Escudo’s vorlegen, und behandelte den Preis. Sie bemerkte, daß er vom
Kaufmanne heimlich die Rechnung fordre, und sagte daher: „Mein lieber
Herr, ich habe vor Tische noch einige Besuche vor mir: Sie würden mich
verbinden, wenn Sie mir alles nach Tische in meine Wohnung schickten;
dann werden Sie auch gleich das Geld dafür erhalten.“ Der Kaufmann
fand sich sehr bereit, und Dorothee sagte ihm ihre Wohnung. Der
Andalusier sprach nur: „Gnädiges Fräulein, ich weiß nun Ihre Wohnung:
wie würden Sie sich wohl benehmen, wenn ich unartig genug wäre, Sie
zu besuchen?“ „Fürs erste,“ antwortete Dorothee, „halt’ ich Sie nicht für
so voreilig; und wenn Sie es wären, würde mir nichts übrig bleiben, als
daß ich durch ein artiges Betragen Sie zu bessern suchte.“ Sie ging fort,
und fuhr nach Hause. Nach Tische kam der Diener des Kaufmanns,
brachte die Waaren, und als sie sich anstellte, als ob sie bezahlen [S
wollte, schlug er es unter dem Vorwande aus, daß die Summe noch zu
klein wäre, um eine Rechnung zu machen, und daß sie ihr noch mehr zu
verkaufen dächten. Es währte nicht lange, so war auch unser Andalusier
da. Dorothee empfing ihn in Gesellschaft ihrer Duennen sehr artig, und er
erzählte ihr, daß er Don Thadeo de Sylva heiße, eigentlich aber Don
Thadeo Tristan de Lorgenes, nach einem Oheime, der das
Abgeschmackte dieses Nahmens mit einer ansehnlichen Erbschaft wieder
gut gemacht hätte; Dorothee vertraute ihm dafür, daß sie mit einem
Ritter verheirathet sey, der sich in Indien befände, und so unglücklich
gewesen sey, in Lima gefangen zu werden; nun erwarte sie aber ihn und
ihr ganzes Vermögen mit der nächsten Flotte. Don Thadeo both ihr
feyerlich alle Dienste an, die in seinen Kräften ständen, indem er wohl
wisse, was sich für Schwierigkeiten fänden, wenn man am Hofe
Forderungen machte. „Es ist wahr,“ erwiederte sie; „aber zum Glücke hab’
ich doch immer genug gehabt, um zwey Dienerinnen, einen Escudero, [S
und meinen Wagen zu halten.“ Nun war es Zeit, sich zu entfernen, und
Thadeo empfahl sich.
Dorothee suchte nun nähere Erkundigung über seine Umstände
einzuziehen, und alle Nachrichten waren nach Wunsche. Seine Besuche
wurden immer häufiger, und seine Neigung immer heftiger. Dorothee
suchte seine Schwächen aufzufinden, unter denen auch die Vorliebe für
Lieder und Melodien, die er selbst verfaßt hatte, war, und suchte sie auf’s
Beste zu benutzen; kurz, er ward so verliebt, als noch kein Liebhaber
ihrer Mitschwesterchen gewesen war. Dorothee, die eine sehr schöne
Stimme, und einen hinreißenden Vortrag hatte, sang von der Stunde an
kein Liedchen mehr, das nicht Thadeo verfertigt hatte, und verlangte
selbst noch Unterricht auf der Guitarre von ihm; dafür liefen sich seine
Bedienten mit Küchengeschenken müde, und er selbst brachte beynahe
jeden Tag irgend eine kostbare Kleinigkeit zum Putze mit. Dorothee hatte
jedes Mahl einen Vorwand bereit, unter dem es ihre Bescheidenheit [S
erlaubte, seine Großmuth nicht zurück zu schrecken. Auch hatte sie sich
schon zwey Mahl einen Kuß auf die Lippen gefallen lassen, von denen sie
den letzten sogar — wer hätte sich’s von Donna Dorothea träumen
lassen? — mit schamhaftem Erröthen erwiederte.
Den folgenden Tag kam Thadeo nicht, und Dorothee war in sichtbarer
Unruhe: sie konnte sein Außenbleiben nur mit der strengen Witterung
entschuldigen; denn es war mitten im Winter. Sie hatte sich auch nicht
getäuscht; denn er kam den andern Tag: indessen war es ihr doch ein
Fingerzeig, daß sie ihn noch nicht genug in Bewegung gesetzt habe. Sie
suchte daher alles Mögliche hervor, was einen Mann fest halten kann: sie
schmollte; sie bezeigte ihm bey jeder Gelegenheit Aufmerksamkeit, und
es gelang ihr auch, ihn bald so zu kirren, daß er mit Leib und Seele an ihr
hing, und nun weiter nichts mehr fehlte, als eine gute Gelegenheit, um
sein Vertrauen und seine Liebe so ergiebig als möglich zu benutzen.
Während Dorothee in Illescas wohnte, war ein Student aus Toledo
dort angekommen. Er hieß Don Basil, war ein erzarmer Teufel, [S
übrigens aber so schön und wacker gebildet, und so aufgeweckten
Geistes, daß Dorotheens Standhaftigkeit selbst so vielen Reitzen nicht
widerstehen konnte. Sie wurden bald bekannt, noch geschwinder
vertraut, und es war bald so weit gekommen, daß sie ihm sogar
gestattete, ihr nach Madrit zu folgen, unter dem Bedingniß’ aber, daß er
ihre Unternehmungen nicht im geringsten stören sollte. Er ging es darauf
ein, und lebte denn auch in Madrit in dem besten Einverständnisse mit
ihr, ohne sich von Eifersucht plagen zu lassen. Alles wäre gut gegangen;
nur wollte sich noch keine besonders vortheilhafte Gelegenheit zeigen.
Endlich traf es sich, daß einer von Thadeo’s Freunden heirathete.
Thadeo sagte Dorotheen, daß die Vermählung bey San Sebastian mit
einer seltnen Pracht gehalten werden würde, und daß er selbst in einem
Glanze erscheinen werde, in dem sie ihn noch nie gesehen habe. „Wenn
ich in der Kirche erscheinen soll,“ sagte Dorothee, „so verlange ich ohne
dieß, daß mein lieber Thadeo die übrige Gesellschaft übertreffe. Wenn [S
Sie mir aber dann gefallen, bin ich nicht zufrieden, Sie nur in der Kirche
bewundern zu können; ich will Sie bey mir im Hause haben. Sie werden
sich doch gewiß um eilf Uhr vom Spiele los machen können; und bis
dahin will ich mit dem Abendessen auf Sie warten.“
Thadeo sagte es ihr heilig zu, und so schieden sie aus einander. Die
Vermählung ging vor sich, und Dorothee erstaunte über die Pracht ihres
Geliebten. Er war im prächtigsten Stoffe gekleidet, und schien alle
Juweliere von Madrit ausgekauft zu haben. Knöpfe, Ketten, Agraffen,
Ringe, alles war von Brillanten. Er kam auch um eilf Uhr des Abends voll
Vergnügen zu Dorotheen, und erzählte ihr, daß er so glücklich gewesen
sey, gegen zwey tausend Escudo’s zu gewinnen. Sie speisten; es wurde
immer später; Dorothee war ungemein gefällig, und sagte endlich, daß
sie ihn heute nicht mehr nach Hause lasse: denn wenn irgend ein
Schurke seinen Schmuck gewahr würde, könnte er ein Unglück haben.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookultra.com

You might also like