2010-12-06 48 views
0

我有一個網站寫在asp.net c#中。它使用的是sql 2005 db,但由於要求,我們確保它與sql 2000 db兼容。網站上的所有內容都轉換爲正常,除了一個使用存儲過程在頁面中讀取的頁面。 @Url_FK變量不再通過存儲過程傳遞給頁面。任何幫助都會有幫助。謝謝!數據類型問題SQL 2005到SQL 2000

表設計唯一的區別在於2005對於TOD_Text字段使用nvarchar(max)和2000 uses varchar(8000)。

存儲過程的代碼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 

存儲過程的代碼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 

----在aspx頁面調用代碼存儲過程

<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

某處出現錯誤嗎?在ASP.NET中? SQL Server? – 2010-12-06 11:07:18

+1

什麼是錯誤? SQL Server 2000和2005的表定義是不同的? – 2010-12-06 11:15:16

+1

我看不出有什麼問題。請發佈您的錯誤代碼。 – 2010-12-06 11:19:04

回答

0

試試這個:

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

在您的數據庫中,TOD_Text列可能在CSF_TOD表中的數據超過8000個字符。檢查是否刪除這些行,然後再次使用sql 2000。

0

根據您的評論,您需要將varchar(8000)字段更改爲sql 2000中的文本列。行不能超過8060字節,除非您使用文本列。