Top Banner
Using New Data Types in 2008 Andrew Couch UK Access User Group www.ukaug.co.uk ASC associates www.upsizing.co.uk
39
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Using New Data Types In2008

Using New Data Types in 2008

Andrew CouchUK Access User Groupwww.ukaug.co.ukASC associateswww.upsizing.co.uk

Page 2: Using New Data Types In2008

Flow of Presentation

Data types and products Share Point : Access & SQL Server SQL Server : Access & Visual Studio SQL Server New Data Types Updating Data & Multi-user Issues Summary

Page 3: Using New Data Types In2008

Why are we interested in Data Types?

What we do with data Exchange

Converting and exchanging data between products

Applications that present data Linking applications to back-end data sources

Applications that maintain data updating data with applications linked to back-end data

source

Page 4: Using New Data Types In2008

Which Products will we consider?

Products Access

Application and data source

SQL Server data source and application components, also report

services

Share Point Application and data source (SQL Server)

Visual Studio Application

Page 5: Using New Data Types In2008

What Data Types do the Products support?

Access (2007)

GUIDMulti-value fields

Share Point (2003)see next slide

SQL Server (2008)Visual Studio (2005/8)

n prefix for Unicode

Page 6: Using New Data Types In2008

Share Point (2003)

Page 7: Using New Data Types In2008

Share Point under the hood

Data is held in the AllUserData table which has a generic set of fields,nvarchar1,nvarchar2......Text1,Text2.........

Page 8: Using New Data Types In2008

Access to Share PointData Types; MOSS

Page 9: Using New Data Types In2008

Access (2007) & Share Point

Attachments (share point lists) Multi-value fields (share point lists)

Page 10: Using New Data Types In2008

Share Point a Data/Object Model; WSS

Object Model Enhancements for Visual Studio http://msdn2.microsoft.com/en-us/library/ms480101.aspx

Ethan’s blog, Inspecting The SharePoint Content Database http://www.sharepointblogs.com/ethan/archive/2007/09/16/inspecting-

the-sharepoint-content-database.aspx

Architectural Overview of Windows SharePoint Services http://msdn.microsoft.com/en-us/library/ms916813.aspx

Page 11: Using New Data Types In2008

Access to SQL Server Data Type Mappings

Yes/No (boolean) : bit Access True -1, SQL Server True 1; also SQL

Server boolean is tri-state 0, 1 and NULL Text : varchar or nvarchar or char or nchar Date/Time : datetime Currency : money Autonumber : int (identity property) OLE Object : image, varbinary, filestream Memo : text or varchar(max) Number : various mappings

Page 12: Using New Data Types In2008

Access Yes/No Data

Page 13: Using New Data Types In2008

Yes/No (without a default)Translated To SQL Server

Page 14: Using New Data Types In2008

Access Memo and OLE Data Types

Page 15: Using New Data Types In2008

Access Using SQL Server 2000 IMAGE and TEXT Data Types

Page 16: Using New Data Types In2008

Visual Studio Editing Records in DetailsView; issues with Text Data Type

Page 17: Using New Data Types In2008

Visual Studio and Image/OLE Data issues with Image Data Type

Page 18: Using New Data Types In2008

Access & SQL Server 2005 Varchar(max) and Varbinary(max)

Page 19: Using New Data Types In2008

Visual Studio DetailsView now works for Updates when using Varchar(max)

Page 20: Using New Data Types In2008

Visual Studio, Images and OLE still a problem with Varbinary(max)

some people would suggest that image data should not directly held in the database and instead a text link is used to point to an external image file which works around this issue

Page 21: Using New Data Types In2008

Mini-summary

Access to SQL Server MEMO to VARCHAR(max) or TEXT OLE to IMAGE or VARBINARY(max),

FILESTREAM ? Visual Studio

VARCHAR(max) a better choice OLE/IMAGE data doesn’t work for bound

controls

Page 22: Using New Data Types In2008

SQL Server (2005)

XML data type office requires program code using new SQL

Native Client drivers to manipulate this

varchar(max), nvarchar(max) advantages for programmers as can use as a

variable (not possible with older text data type) varbinary(max)

Page 23: Using New Data Types In2008

Date & Time Data IBM DB2

DATE, TIME and TIMESTAMP date range 0001-01-01 to 9999-12-31 Oracle

DATE (includes time), TIMESTAMP, date range January 1 4713 BC to 9999-12-31

SQL Server (2000/2005) DATETIME, SMALLDATETIME, date range 1753-01-01 to 9999-12-

31 for DATETIME, when no date given defaults to 1st January 1900 Access – DATE/TIME

date range 1-1-100 to 9999-12-31,when no date given defaults to 30th December 1899 and hides date

SQL Server (2008) DATE, TIME,DATETIME2, DATETIMEOFFSET range 0001-01-01

00:00:00:0000000 to 9999-12-31 23:59:59:9999999

Page 24: Using New Data Types In2008

Access allowing Updates to new Date and Time Data Types

Page 25: Using New Data Types In2008

Searching

some limitations where fields are strings

Page 26: Using New Data Types In2008

Controlling Time Precision

Page 27: Using New Data Types In2008

SQL Server (2008)

Filestream Unstructured large object data

DATE and TIME Dates from 01/01/0001 to 31/12/9999 Times accurate to 00:00:00:0000000

DATETIME2 and DATEOFFSET New combined date and time data types with higher accuracy,

Combines above, offset type includes time-zone data HIERARCHYID

Optimised for data hierarchies (special functions) GEOGRAPHY and GEOMETRY

.NET-based spatial data First deals with round-earth co-ordinates, second uses a flat-earth

style of co-ordinates Special functions

Page 28: Using New Data Types In2008

Geography

It comes as no surprise that this renders in a binary type format and you can’t edit it

Stored procedures and pass through queries to the rescue!

Page 29: Using New Data Types In2008

With a little Magic

Page 30: Using New Data Types In2008

Geography Methods

Page 31: Using New Data Types In2008

Timestamps & Multiple Users

SQL Server

Overwritedata when changed

Optimisticrow versioning

Timestampchecking

Visual Studio does not utilise timestamps on bound controls the new LINQ will support

timestamp concurrency

Page 32: Using New Data Types In2008

Access Row Versioning & Timestamps

Row VersioningSQLExecDirect: UPDATE "dbo"."authors" SET "au_fname"=? WHERE "au_id" = ? AND "au_lname" = ? AND "au_fname" = ? AND "phone" = ? AND "address" = ? AND "city" = ? AND "state" = ? AND "zip" = ? AND "contract" = ?

TimestampsSQLExecDirect: UPDATE "dbo"."authors" SET "au_fname"=? WHERE "au_id" = ? AND "ts" = ?

Timestamps improve efficiency and remove potential problems with rounding errors in numerical data

Page 33: Using New Data Types In2008

LINQ

Visual Studio 2005 bound controls don’t support timestamp checking

Walkthrough: Using a Timestamp with the LinqDataSource Control to Check Data Integrity http://msdn.microsoft.com/en-us/library/bb470449.aspx

Walkthrough: Selecting and Filtering a Subset of Data with the LinqDataSource and GridView Controls http://msdn.microsoft.com/en-us/library/bb470363.aspx

Page 34: Using New Data Types In2008

Visual Studio, write-back failure with null values

If @original_CompanyName is null and new value is null then the write-back will fail when NULL=NULL (UNKNOWN)

For further information see http://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=93937

UpdateCommand = "UPDATE [Customers]

SET [CompanyName] = @CompanyName……

WHERE [CustomerID] = @original_CustomerID AND [CompanyName] = @original_CompanyName”

Page 35: Using New Data Types In2008

Example Visual Studio Update handling Null Values

UpdateCommand = "UPDATE [Customers] SET [CompanyName] = @CompanyName

WHERE [CustomerID] = @original_CustomerID COALESCE([CompanyName],'') = COALESCE(@original_ CompanyName,'')”

For numerics use COALESCE([fieldname],0)

For dates use COALESCE([fieldname],’ 1st January 1900’)

Or([CompanyName] = @original_CompanyName ) OR ([CompanyName] IS NULL and @original_CompanyName IS NULL)

Or useSET ANSI_NULLS OFF

Page 36: Using New Data Types In2008

tsequal function

Time stamps can not be directly compared by a program, although SQL Server has a function called tsequal which can perform a comparison in a stored procedure.

WHERE tsequal(@ts1,@ts2)

Page 37: Using New Data Types In2008

Summary

We have a diverse set of data types in the different products

Need to test data types for product compatibility, don’t forget different versions and drivers can have an impact

Access and Share Point very good compatibility Access and SQL Server good compatibility Share Point data easily exported and linked MOSS

but WSS more difficult SQL Server 2008 new data types hold great promise,

and it will possible work with then in Office 2007

Page 38: Using New Data Types In2008

Wish list

tree presentation for XML data when linking Office to SQL Server

Visual Studio bound controls to display bound image data

Visual Studio bound controls to support timestamps

Page 39: Using New Data Types In2008

ASC Associates

Software consultancy specialising in Access, SQL Server and .net applications

Migration Upsizing SQL Tool MUST

upsizes Access databases to SQL Server 2000/2005/Express MUST+SQL

converts Access queries to views and stored procedures in SQL Server 2000/2005/Express

MUST+Web converts Access forms to web forms in Visual Studio projects in SQL

Server 2005/Express

www.upsizing.co.uk [email protected]