2010-12-06 3 views
0

J'ai un site Web écrit dans asp.net C#. Il utilisait un sql 2005 sq, mais en raison des exigences, nous nous assurons qu'il est compatible avec un sql 2000 db. tout le contenu du site a été converti correctement, à l'exception d'une page qui utilise une procédure stockée pour lire dans un rectangle de sélection. la variable @Url_FK n'est plus transmise à la page via le proc stocké. toute aide serait utile. Merci! La seule différence dans la conception de la table est 2005 utilise nvarchar (max) et 2000 utilise varchar (8000) pour le champ TOD_Text.Type de données SQL Server 2005 à SQL 2000

Code proc stocké 2005:

USE [CSF] 
GO 
/****** Object: StoredProcedure [dbo].[sp_test] Script Date: 12/06/2010 11:56:36 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[sp_test] 
(
    @Url_FK int 
) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
SELECT  TOP (1) TOD_Text, Url_FK, TOD_Date 
FROM   CSF_TOD 
WHERE  (Url_FK = @Url_FK) AND (TOD_Date <= GETDATE()) 
ORDER BY TOD_Date DESC 
END 

Code procédure stockée 2000:

-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
CREATE PROCEDURE [dbo].[sp_test] 
(
    @Url_FK int 
) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
SELECT  TOP 1 TOD_Text, Url_FK, TOD_Date 
FROM   CSF_TOD 
WHERE  (Url_FK = @Url_FK) AND (TOD_Date <= GETDATE()) 
ORDER BY TOD_Date DESC 
END 

GO 

---- code dans les appels page ASPX stockés proc

<asp:SqlDataSource ID="sds_TOD" runat="server" ConnectionString="<%$ ConnectionStrings:TESTConnectionString %>" SelectCommand="sp_TEST" SelectCommandType="StoredProcedure"> 
    <SelectParameters> 
    <asp:Parameter DefaultValue="1" Name="Url_FK" Type="Int32" /> 
+2

Y at-il une erreur quelque part? dans ASP.NET? Serveur SQL? –

+1

Quelle est l'erreur? Les définitions de tables sont-elles différentes entre SQL Server 2000 et 2005? –

+1

Je ne vois rien de mal à cela. S'il vous plaît poster votre code d'erreur. –

Répondre

0

Essayez ceci:

SELECT  TOP 1 cast(TOD_Text as varchar(8000)) as TOD_Text, Url_FK, TOD_Date 
FROM   CSF_TOD 
WHERE  (Url_FK = @Url_FK) AND (TOD_Date <= GETDATE()) 
ORDER BY TOD_Date DESC 
END 
+0

Je l'ai couru et le @url_fk ne passe toujours pas:/ – PW2

0

Dans votre base de données, la colonne TOD_Text peut contenir des données supérieures à 8000 caractères dans la table CSF_TOD. Vérifiez que, si oui, supprimez ces lignes et réessayez avec sql 2000.

+0

aucun enregistrement ne dépasse 8000 caractères. – PW2

0

En fonction de votre commentaire, vous devez remplacer le champ varchar (8000) par une colonne de texte dans sql 2000. Une ligne ne peut pas dépasser 8060 octets, sauf si vous utilisez la colonne de texte.

Questions connexes