Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Azra [Florent Santin]

.Net, X'Net, aucun lien de parenté V2.0

Actualités

  • MSN Alerts
    View Florent Santin's profile on LinkedIn
[Teched 2007] Programming SQL Server 2008

Carl Perry - Senior Program Manager Lead Microsoft

Après mon aventure hors de mon bocal sur Windows 2008 Server, je me devais de compléter avec une session sur les nouveautés de SQL Server 2008 (je me suis quand même trouvé plus dans un domaine compréhensible).

Rappel des API permettant d'accéder a SQL Server 2008:

  • ADO.NET 3.5
  • SQL Server 2008 native client
  • Windows Data Access Components (WDAC / MDAC): ODBC, OLE DB, ADO
  • Microsoft SQL Server 2005 Java Database connectivity (JDBC) driver (nouveau)
  • Microsoft SQL Server 2005 Driver for PHP (nouveau)

Mise en avant par la suite des nouveautés pour le développeur:

Table-Valued Parameters

Utilisation possible d'une copie de table en mémoire (ou table virtuelle) comme paramètre pour une procédure stockée ou une fonction. SqlParameter d'ADO.NET accepte en effet maintenant un paramètre de type DataTable "SqlDbType.Structured" pour permettre l'ajout de ce type de fonctionnalité dans .NET. Du coté de SqlServer, il est nécessaire de créer un type représentant une DataTable temporaire afin de pouvoir obtenir une correspondance ADO.NET <=> SQL Server. (la prise en compte ODBC et OLE DB existe aussi).

Mise en pratique: création d'un object DataTable dans le code .NET (DataTable dt = new DataTable, puis Columns.add.. et ajout de lignes) et d'un type correspondant dans SQL Server en T-SQL (Create type TableParameterName as Table et définition de colonnes dans le corp). Création ensuite d'une procédure stockée ayant comme paramètre le type de la table (TableParameterName) et utilisation de la table envoyée en paramètre (donc créé et peuplée depuis le code .NET) dans une requête avec une jointure sur une table existant physiquement dans SQL Server: il est donc possible dans SQL Server 2005 de faire une requête à la fois sur une table réélle et sur une table virtuelle créé depuis le code .NET.

Nouveaux types "Date" et "Time"

Rappels types existants:

  • smalldatetime, précision 1 minute, portée de 1900-1-1 vers 2079-6-6
  • datetime: précision 3,33 milliseconds, portée de 1743-1-1 vers 9999-12-31

Nouveaux types:

  • date, précision 1 journée , portée de 1-1-1 vers 9999-12-31 => correspondance ADO.NET "DateTime"
  • time, précision 100 nanosecondes, portée de 00:00:00 vers 23:59:59:999999 => correspondance ADO.NET "Timespan'
  • datetime2, précision 100 nanosecondes, portée de 0001-01-01 00:00:00.0000000 vers 9999-12-31 23:59:59.9999999 => correspondance ADO.NET "DateTime"
  • datetimeoffset, précision 100 nanosecondes , portée de 00001-01-01 00:00:00.0000000 vers 9999-12-31 23:59:59.9999999 (in UTC)=> correspondance ADO.NET "DateTimeOffset" (nouveau SQLDbType)

Un bon tableau récapitulatif est disponible ici: http://blogs.msdn.com/manisblog/archive/2007/08/28/sql-server-2008-enhancements-in-date-and-time-data-types.aspx

Le DateTimeOffSet rajoute la prise en compte du fuseau horaire et permet de faire des tris (sort) fonctionnels sur une requête contenant des dates / heures ayant des fuseaux différents.

Taille illimitée pour les User Defined Types (UDT)

Avant 8,000 bytes de limite en taille, maintenant max value (2,147,483,647 bytes) pour les types SQL écrit en .NET exécuté par la CLR embarquée dans SQL Server.

Stockage de fichier: plus de limite de stockage

L'attribut de stockage FILESTREAM sur un champ varbinary(max) permet d'aller plus loin que la limite de stockage de 2 GB en stockant des données directement sur le système de fichier (dans un chemin qu'il faut spécifier). Pour les manipuler, de nouvelles fonctions SQL: PathName() (donne le chemin complet du fichier ciblé), Get_filestream_transaction_context() et une nouvelle interface client OpenSqlFileStream.

Ceci permet par exemple de stocker des vidéos volumineuses dans une table SQL (d'un point de vue utilisation) cote à cote avec des données relationnelles classiques (nom du fichier, meta données...): SQL Server se charge de les extraire du système de fichier et de les renvoyer lors qu'elles sont requêtées.

Voila, il ne me reste plus qu'a écouter le point de vue de Christian sur tout ça!

Posted: mardi 6 novembre 2007 15:36 par azra
Classé sous :
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- ssdl view et TPT par Matthieu MEZIL le 07-05-2008, 02:04

- L'injection SQL n'est PAS un problème QUE pour les développeurs web ! par CoqBlog le 07-05-2008, 01:08

- Un outil pour réaliser des animations WPF basées sur des équations de Bézier par Perspective le 07-04-2008, 21:45

- Sandcastle et CodePlex : le verdict par CoqBlog le 07-04-2008, 20:53

- ssdl view et TPH par Matthieu MEZIL le 07-04-2008, 19:12

- Webcasts sur le Parallel Framework disponibles par Matthieu MEZIL le 07-04-2008, 17:26

- [Silverlight] - Comprendre et Débuter avec Silverlight par Danuz le 07-04-2008, 12:41

- SharePoint : Nouvel article sur l'exportation et Importation de sites SharePoint par Blog Technique de Romelard Fabrice le 07-04-2008, 01:00

- ImagineCup 2008 Final in Paris: Day 1 par Richard Clark le 07-03-2008, 22:48

- PowerShell : Comment utiliser un ENUM .NET dans un script PowerShell par Blog Technique de Romelard Fabrice le 07-03-2008, 18:09