Bonjour,
je ne sais pas si c'est bien le lieu pour poser ma question sur mon problème de serveur lié, sinon merci de m'en excuser d'avance.
- J'utilise les serveurs liés dans SQL Server (version 2008 Express)
et Je fais mes tests avec SQL SMS 2008
- J'ajoutes sans problème les serveurs lié OLE DB (Divers VFPOLEDB)
exemple :
EXEC master.dbo.sp_addlinkedserver @server = N'TEST', @srvproduct=N'vfp', @provider=N'VFPOLEDB', @datasrc=N'C:\Northwind\Northwind.dbc'
- Dans une DB de SQL : J'ajoutes sans problème des vues sur les tables du serveur lié, par exemple :
1 2 3 4 5 6 7 8 9 10 11 12
| USE [test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Region]
AS
SELECT regionid,
CAST(regiondescription as CHAR(50)) COLLATE French_CS_AS as regiondescription
FROM TEST...Region as Region;
GO |
- Cela fonctionne et j'ai bien le résultat escompté sur un
1 2 3
| USE [test04]
GO
select * from Region |
J'en viens a mon problème :
- Dans l'exemple ci avant :
ma table region du linked server a comme champs :
REGIONID de type INT et NON NULL
REGION DESCRIPTION de TYPE CHAR(50) et NON NULL
- Dans SQL SMS dans la DBSQL -> Vues -> dbo.Region -> Colonnes
il me liste bien les 2 champs avec les bons types MAIS tous les champs ont le NULLABLE, (la valeur NULL possible)
- Dans la crétion de ma vue je n'ai pas trouvé le moyen d'expliciter que je ne veux pas de NULL sur REGIONID
Je me suis dit que c'est peut être mon divers OLE DB qui pourrait être moisi en ne retournant pas l'information "NULLABLE"
mais
- si je fais la requete suivante dans SQL SMS :
EXEC sp_columns_ex 'TEST', 'region', '', '', 'regionid';
Le select en réponse fait bien apparaitre les champs : 'IS_NULLABLE' a 'NO' ainsi que le champ 'NULLABLE' à 0 (correct)
Donc l'information semble bien exposée par le serveur lié et bien récupérée par SQL Server,
mais pas dans ma VUE....
- si je fais le test en utilisant ADOX avec le même drivers OLE DB sur la même table, j'ai bien le NOT NULL pris en compte.
Auriez-vous une idée pour que je puisse expliciter le NOT NULL dans ma vue ?
Savez vous si c'est bien la sp : 'sp_columns_ex' qui est utilisé par sql au niveau de la Vue ?
Merci d'avance
Cordialement
Fran6
Partager