Chapter 1: Introduction to Client/Server The PC revolution Client/server to the rescue Features of client/server databases Data access Security Database backup Point-in-time recovery Triggers Referential integrity Indexes Defaults Rules Primary key generation Stored procedures Views User-defined data types Replication Transactions Scalability Reliability Advantages of client/server Performance Cost Security Scalability Summary Chapter 2: Visual FoxPro for Client/Server Development Object-oriented programming (OOP) Support for COM Built-in client/server support Built-in local data engine Support for other data-access technologies Rapid Application Development (RAD) Summary Chapter 3: Introduction to SQL Server 7.0 Why move to SQL Server? Capacity Concurrency Robustness Security Installation SQL Server editions Licensing Character sets Sort order Network libraries Databases, database files and the transaction log Types of databases master model tempdb msdb Database files Primary data files: Secondary data files: Log files: Creating a database The transaction log How SQL Server allocates storage Transactions and locking Implicit and explicit transactions Locking Shared locks Exclusive locks Update locks Resources Deadlocks Database objects SQL Server object names Tables Enforcing data integrity Data types IDENTITY property Nullability Constraints PRIMARY KEY constraints UNIQUE constraints CHECK constraints DEFAULT constraints FOREIGN KEY constraints Indexes Creating indexes Views Stored procedures Triggers The INSERT operation The DELETE operation The UPDATE operation Summary Chapter 4: Remote Views Connections Remote views Updatable views Buffering Committing and refreshing buffers Other view properties FetchAsNeeded and FetchSize MaxRecords FetchMemo Tables Field properties DefaultValue RuleExpression UpdateName DataType Chapter 5: Upsizing: Moving from File-Server to Client/Server Why upsize? Using the SQL Server Upsizing Wizard Indexes Defaults Relationships Validation rules Changes made locally Finished at last? Modifying the results of the Upsizing Wizard The local database Chapter 6: Extending Remote Views with SQL Pass Through Connecting to the server The SQLConnect() function The SQLStringConnect() function Handling connection errors Disconnecting Accessing metadata The SQLTables() function The SQLColumns() function Submitting queries Queries that return a result set Retrieving multiple result sets Queries that modify data Parameterized queries The advantage of parameterization Making SQL pass through result sets updatable Calling stored procedures Handling input and output parameters Output parameters Transaction management Binding connections Asynchronous processing Connection properties revisited Other connection properties The DispLogin property The ConnectionTimeOut property The QueryTimeOut property The IdleTimeOut property Remote views vs. SQL pass through SQL pass through Remote views Using remote views and SPT together Transactions Stored procedures Filter conditions Chapter 7: Downsizing Downsizing The case for a single code base Interchangeable back ends Remote views of VFP data Advantages of remote VFP data Disadvantages of remote VFP data Creating remote views of VFP data Substituting local views for remote views Abstracting data access functionality Application-level data handler Form-level data handler Views DBC Microsoft Data Engine (MSDE) What is MSDE? Free run-time distribution and licensing SQL Server compatibility Operating system compatibility Microsoft Office 2000 MSDE vs. SQL Server User limitations Capacity limitations No user interface Access 2000 Visual InterDev 6.0 In-house tools Distributing MSDE applications Migrating MSDE databases to SQL Server Chapter 8: Errors and Debugging Errors and Debugging Handling errors Trapping errors Reporting errors Conflict resolution View errors Debugging tools The SQL Server Performance Monitor ODBC logs Chapter 9: Some Design Issues for C/S Systems Some Design Issues for C/S Systems SQL database design issues Data integrity mechanisms Data types, NULLs and defaults Data types Nulls Defaults Rules and check constraints Primary keys Generating keys Referential integrity DRI/foreign keys Triggers Review of data integrity Stored procedures SQL pass though ADO VFP developer vs. SQL Server DBA Client/server performance issues Choosing indexes Client/server division of work Bandwidth Scalability Data location Security Client application SQL Server logins and permissions Application roles Chapter 10: Application Distribution and Managing Updates Client/server development Development environment SQL Server and Visual FoxPro Programming for deployment Deployment models Traditional Components Server Distributing databases (creating) Existence of SQL Server First installation Prior existence SQL pass through SQL scripts SQL-DMO Object transfer (DTS) Backup/restore sp_Detach_DB and sp_Attach_DB Managing updates Application changes Version control Traditional Component-based Database updates Version control SQL pass through SQL scripts SQL-DMO Version control coordination between client and server Local lookup data Why Managing updates Chapter 11: Transactions Transaction basics ACID properties Atomicity Consistency Isolation Durability Visual FoxPro transactions The missing property SQL Server transactions Implicit transactions SQL Server isolation levels ?An uncommitted dependency ?Inconsistent analysis Phantom reads ?Read uncommitted ?Read committed ?Repeatable read ?Serializable Setting isolation levels Durable transactions Locking Lock compatibility Blocking Viewing lock activity Deadlocks Transaction gotcha! Chapter 12: ActiveX Data Objects Why ADO? ADO benefits Passing data between tiers of an n-tier application The ability to access non-relational data (OLE DB vs. ODBC) Stored procedures VFP deficiencies—ADO to the rescue ADO disadvantages Installing and distributing ADO Using ADO within Visual FoxPro The Connection object The RecordSet object Displaying RecordSets with code Displaying RecordSets with ActiveX controls ADO constants Displaying RecordSets with the VFPCOM utility More on VFPCOM The Command object Appendeix: New Features of SQL Server 2000 Feature list Installation issues Query Analyzer Debugging stored procedures User-defined functions Referential integrity Trigger enhancements Indexing computed columns New data types Big integers Variants Tables as variables