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