Difference between revisions of "mssqlconn/fr"
Line 20: | Line 20: | ||
==Limitations et conseils== | ==Limitations et conseils== | ||
− | * Sybase | + | * Port Sybase : le port par défaut pour Sybase ASE est le 5000. Comme FreeTDS/mssqlconn utilise 1433 par défaut, vous pouvez vouloir ajouter :5000 à la propriété hostname automatiquement ou après le retour d'information de l'utilisateur final. |
− | + | Comme la documentation le spécifie : | |
− | * | + | * vous pouvez avoir besoin affiner certains paramètres pour la prise en charge des BLOB. |
− | * MS SQL multiple resultsets | + | * les ensembles résultats multiple de MS SQL (''multiple resultsets'',MARS) ne sont pas pris en charge. |
===Paramètres de sorties et procédures stockées=== | ===Paramètres de sorties et procédures stockées=== | ||
− | + | Aussi, '''TMSSQLConnection''' et '''TSybaseConnection''' ne prennent pas en charge la gestion des status de retour et les paramètres de sortie (''output parameters'') des procédures stockées. Pour plus d'information, voir : http://www.freetds.org/faq.html#ms.output.parameters. | |
− | + | ||
<syntaxhighlight> | <syntaxhighlight> | ||
with SQLQuery1 do begin | with SQLQuery1 do begin | ||
Line 38: | Line 38: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Quelques conseils de plus : | |
− | * | + | * Vous pourriez vouloir faire un YourConnection.ExecuteDirect('SET ANSI_NULL_DFLT_ON ON'); si vous voulez permettre les valeurs NULL pour les colonnes à la création des tables. Voir la documentation : http://msdn.microsoft.com/en-us/library/ms174979.aspx. |
− | * | + | * Vous pourriez vouloir de manière similaire définir SET ANSI_PADDING à ON pour activre ne meilleure compatibilité avec les fonctions de comparaison de texte de SQLdb. Voir la documentation MS : http://msdn.microsoft.com/en-us/library/ms187403.aspx. |
==Messages d'erreur== | ==Messages d'erreur== |
Revision as of 07:19, 21 April 2017
│
English (en) │
español (es) │
français (fr) │
polski (pl) │
mssqlconn est un unité de fcl-db contenant le code du connecteur pour TMSSQLConnection (MS SQL Server) et TSybaseConnection (Sybase ASE).
Lazarus utilise mssqlconn pour présenter un connecteur MS SQL et un connecteur Sybase ASE.
DBLib
mssqlconn utilise l'unité de bas-niveau dblib qui nécessite la bibliothèque FreeTDS (.dll/.dylib/.so) pour se connecter au serveur.
Installation
La seule chose dont vous avez besoin est une bibliothèque dll/dylib/so FreeTDS pour votre plate-forme.
- Sur Linux, téléchargez le paquet freetds qui fournit libsybdb.so (p.ex. dans la Debian, cela est fourni par le paquet libsybdb5) et le paquet de développement associé en utilisant votre gestionnaire de paquet. vous aurez aussi besoin d'ajouter un lien symbolique libsybdb.so vers libsybdb.so.5.
- Sur Windows, vous pouvez télécharger une version 32 ou 64 bits récente de la bibliothèque FreeTDS dblib.dll ici : [1]
Utilisation avancée : en modifiant le fichier FPC dblib.pas SQLDB pourrait utiliser la bibliothèque "native" ntwdblib.dll au lieu de la bibliothèque FreeTDS par défaut dblib.dll (dans ce cas, FPC a besoin d'être recompilé).
Documentation
Documentation officielle : Documentation FPC sur mssqlconn
Limitations et conseils
- Port Sybase : le port par défaut pour Sybase ASE est le 5000. Comme FreeTDS/mssqlconn utilise 1433 par défaut, vous pouvez vouloir ajouter :5000 à la propriété hostname automatiquement ou après le retour d'information de l'utilisateur final.
Comme la documentation le spécifie :
- vous pouvez avoir besoin affiner certains paramètres pour la prise en charge des BLOB.
- les ensembles résultats multiple de MS SQL (multiple resultsets,MARS) ne sont pas pris en charge.
Paramètres de sorties et procédures stockées
Aussi, TMSSQLConnection et TSybaseConnection ne prennent pas en charge la gestion des status de retour et les paramètres de sortie (output parameters) des procédures stockées. Pour plus d'information, voir : http://www.freetds.org/faq.html#ms.output.parameters.
with SQLQuery1 do begin
SQL.Text:='declare @param int; declare @ret int;'+
'exec @ret=MyStoredProc 1, @param OUTPUT;'+
'select @ret as return_status, @param as out_param';
Open;
end;
Quelques conseils de plus :
- Vous pourriez vouloir faire un YourConnection.ExecuteDirect('SET ANSI_NULL_DFLT_ON ON'); si vous voulez permettre les valeurs NULL pour les colonnes à la création des tables. Voir la documentation : http://msdn.microsoft.com/en-us/library/ms174979.aspx.
- Vous pourriez vouloir de manière similaire définir SET ANSI_PADDING à ON pour activre ne meilleure compatibilité avec les fonctions de comparaison de texte de SQLdb. Voir la documentation MS : http://msdn.microsoft.com/en-us/library/ms187403.aspx.
Messages d'erreur
- Check if TCP/IP protocol is enabled on SQL Server side using "SQL Server Configuration Manager" - "SQL Server Network Configuration"
- Check if TCP port 1433 is opened
- If you connect to specific instance of SQL Server (this is also case of SQL Server Express), check if SQL Server Browser Service is running on server (service listens on UDP port 1434)
Erreur 20019 : Attempt to initiate a new Adaptive Server operation with results pending
- Set TSQLQuery.PacketRecords property to -1
- For more information see: http://www.freetds.org/faq.html#pending
Erreur 20047 : DBPROCESS is dead or not enabled
- SQL Server periodically verifies (by default every 30 seconds) if idle TCP/IP connection is still intact by sending a keep alive packet to its peer. If the remote system is still reachable and functioning, a acknowledge packet is sent back. If not local TCP will reset connection.
- Adjust SQL Server Configuration Manager -> SQL Server Network Configuration -> Protocols -> TCP/IP : "Keep Alive"
EINOutError/Can not load DB-Lib client library "dblib.dll". Check your installation
- Make sure you have all required dlls installed (e.g. dblib.dll, libiconv2.dll)
- Make sure you have all required C/C++ runtime libraries installed that dblib.dll depends on
- Make sure the bitness (32 or 64 bit) of the dblib library and your compiled program match
Exemples
Création d'une base de données
The example below creates a database on an MS SQL Server. For this to work, the connection's parameter AutoCommit must be set to on. For normal subsequent connection you can switch it off again and use regular StartTransaction and Commit.
// Set up a form with a button called DBButton,
// textbox called DatabaseNameEdit,
// '''MSSQLConnection''' called FConn
// ***make sure the Autocommit parameter is on for the create db part before connectiong:
//FConn.Params.Add('AutoCommit=true');
procedure TForm1.CreateDBButtonClick(Sender: TObject);
var
CurrentDB: string;
begin
if DatabaseNameEdit.Text='' then
begin
showmessage('Empty database name. Please specify database name first.');
exit;
end;
CurrentDB:=FConn.DatabaseName;
try
// For FPC 2.6.1+
FConn.ExecuteDirect('CREATE DATABASE '+DatabaseNameEdit.Text);
{
// This works with FPC 2.7.1, not on 2.6.1
FConn.CreateDB;
}
except
on E: Exception do
begin
showmessage('Exception running CreateDB: '+E.Message);
end;
end;
end;