Тип выпуска sql 2005 до sql 2000 - PullRequest
       15

Тип выпуска sql 2005 до sql 2000

0 голосов
/ 06 декабря 2010

У меня есть сайт, написанный на asp.net c #. он использовал базу данных SQL 2005 года, но из-за требований мы обеспечили его совместимость с базой данных SQL 2000 года. все на сайте преобразовано нормально, за исключением одной страницы, которая использует хранимую процедуру для чтения в шатре. переменная @Url_FK больше не передается на страницу через сохраненный процесс. любая помощь будет полезна. Спасибо!

Единственное отличие в дизайне таблицы в том, что 2005 использует nvarchar (max), а 2000 использует varchar (8000) для поля TOD_Text.

сохраненный код процедуры 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" />

Ответы [ 3 ]

0 голосов
/ 06 декабря 2010

В вашей базе данных столбец TOD_Text может содержать данные больше 8000 символов в таблице CSF_TOD. Проверьте это, если да, удалите эти строки и попробуйте снова с SQL 2000.

0 голосов
/ 16 января 2011

Исходя из вашего комментария, вам нужно изменить поле varchar (8000) на текстовый столбец в sql 2000. Строка не может превышать 8060 байт, если вы не используете текстовый столбец.

0 голосов
/ 06 декабря 2010

Попробуйте это:

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