Citation:
Migrer une base Access vers SQL Server
Lorsque l'on aborde ASP, il est fréquent de recourir à Access pour apprendre à interfacer convenablement un site web avec une base de données. Mais très vite, si le site une fois publié connaît un tant soit peu de succès, Access montre ses limites, et un SGBD plus fiable s'avère nécessaire. Voyons ici comment transférer une base Access en une base SQL Server.
Différences fondamentales
A la différence d'Access, SQL Server requiert une identification de l'utilisateur, qu'il soit administrateur des bases de données ou propriétaire de l'une d'entre elles, ou encore, et ce n'est pas le moindre cas, qu'il en soit utilisateur, c'est-à-dire qu'il accède aux données contenues au travers d'une page ASP par exemple. Dans un contexte DSN / ODBC, l'appel de la base de données se fera donc par le nom du DSN, mais assorti d'un nom d'utilisateur assorti d'un mot de passe, ce couple d'identifiants devant être préalablement déclaré dans les utilisateurs SQL Server côté serveur (c'est à l'administrateur NT de le faire).
Dans le global.asa, nous aurons donc un appel de ce type :
Sub Application On_Start
Application("ConnectionString") = "DSN=nomdudsn;User Id=user;PASSWORD=password"
et, si l'on appelle la connexion à chaque page, l'on aura alors :
Conn.Open "nomdudsn", "user", "password"
La seconde différence fondamentale entre les deux SGBD réside dans le fait que les types de champs ne portent pas les mêmes noms : un champ mémo devient ntext, un champ numérique devient int. Quant à l'équivalent du champ de type NuméroAuto, il s'agit en fait d'un champ int, mais avec l'option Compteur activée. Ne pas oublier, lors de la migration, de cocher cette case à chaque fois que nécessaire.
Méthodes de migration
La première étape consiste à créer sur votre machine un DSN qui vous permettra d'accéder à votre base SQL Server en vous identifiant en tant que propriétaire de la base.
Si vous disposez de l'édition Desktop de SQL Server 7, et si vous disposez au minimum des droits db_owner (propriétaire de la base), le plus simple est d'importer des données Access à partir de l'assistant d'importation DTS. Pour cela, cliquez sur votre base et sélectionnez Importer des données. Sélectionnez le type de données source (Access), sélectionnez la base contenant les données à importer, puis identifiez-vous en tant que propriétaire de la base dans la page suivante, en utilisant l'identification SQL Server.
L'assistant va vous proposer, table par table et sous forme de liste, de transformer les données en vue de leur importation. C'est ici le point le plus important de l'opération ; si la plupart des paramètres de champs seront reconnues sans difficulté, il convient de procéder aux vérifications suivantes :
1/ Cocher la case Compteur pour tous les champs (1 par table) de type NuméroAuto, et vérifier que la valeur Null est interdite.
2/ Bien revérifier que les champs mémo ont été transformés en champs ntext. Dans le cas contraire, procéder à cette modification, puis placer tous les champs ntext en fin de table, à l'aide d'un simple couper / coller.
Vous pouvez maintenant achever l'importation, un indicateur de progression s'affichera.
Si vous ne disposez pas de l'édition Deskpro de SQL Server 7, utilisez l'assistant de migration d'Access 2000, qui se situe dans Outils / Utilitaires de bases de données / Assistant de migration SQL Server. Vérifiez ensuite auprès de votre hébergeur que les champs compteur ont bien été paramétrés et que les champs ntext sont placés à la fin de chaque table.
Côté pages ASP
Hormis l'appel de la connexion qui a été évoqué plus haut, il convient de noter qu'une modification importante est à procéder dans vos pages ASP. Les champs ntext sont, là aussi, à afficher en dernier. Ce qui signifie que, dans un exemple où, après un champ ntext, vous devez afficher par exemple une date ou un champ text normal, il convient de stocker ceux-ci dans des variables et d'afficher la variable et non le contenu du champ :
signature = rs("Signature_Article")
'ensuite on affiche tout ce qui peut s'afficher, jusqu'au champ ntext inclus
= signature 'au lieu de =rs("Signature_Article")
Avec ces quelques instructions, vous disposez des informations de base, mais indispensables, nécessaires à un passage facile d'une plate-forme limitée à un SGBD réellement performant.