2010-12-06 7 views
0

私はasp.net C#で書かれたWebサイトを持っています。それはSQL 2005のDBを使用していたが、要件のために、それはSQL 2000 DBと互換性があることを確認している。マーキーを読み込むためにストアドプロシージャを使用している1ページを除いて、サイトのすべてがokに変わりました。 @Url_FK変数はストアドプロシージャを介してページに渡されなくなりました。どんな援助も役に立つでしょう。ありがとう!データ型の問題SQL 2005からSQL 2000へ

テーブルデザインの唯一の違いは、2005がnvarchar(max)を使用し、2000がTOD_Textフィールドにvarchar(8000)を使用する点です。

ストアドプロシージャのコード2005:プロシージャ・コード2000保存

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 

:aspxページで

-- ============================================= 
-- 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 

を----コード

<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サーバー? –

+1

エラーは何ですか? SQL Server 2000と2005のテーブル定義は異なりますか? –

+1

私はこれに何か間違って見ることができません。エラーコードを投稿してください。 –

答えて

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

これを実行しても、@ url_fkはまだ通過していません。/ – PW2

0

データベースでは、列TOD_TextのデータがCSF_TODテーブルに8000文字を超えることがあります。その場合は、それらの行を削除して、再度SQL 2000を実行してください。

+0

レコードは8000文字を超えていません。 – PW2

0

コメントに基づいて、varchar(8000)フィールドをsql 2000のテキスト列に変更する必要があります。行は8060を超えることはできませんバイトを使用します。

関連する問題