Ошибка SELECT, поскольку следующие параметры SET имеют неверные настройки - PullRequest
0 голосов
/ 28 марта 2020

Я получаю эту ошибку для сценария SQL, показанного ниже:

Ошибка SELECT, поскольку следующие параметры SET имеют неверные настройки: 'CONCAT_NULL_YIELDS_NULL ANSI_WARNINGS ANSI_PADDING'. Убедитесь, что параметры SET верны для использования с индексированными представлениями и / или в 393

Кроме того, он работал на одном SQL сервере, но на другом я получаю сообщение об ошибке. Оба SQL Server 2016.

Я также заметил, что ошибка заключается в том, что я использую драйвер «ODB C драйвер 13 для sql сервер» для подключения к БД. Но если я использую «SQl собственный клиент сервера», то это не проблема.

/****** Object:  Stored Procedure dbo.TAHolidayCal_FindBrkCls     ******/
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id('dbo.TAHolidayCal_FindBrkCls'))
    DROP PROCEDURE dbo.TAHolidayCal_FindBrkCls
GO

CREATE PROCEDURE dbo.TAHolidayCal_FindBrkCls
    (@calDate DATETIME,
     @holCalID CHAR(4),
     @InstID01 CHAR(13),
     @InstID02 CHAR(13) = NULL,
     @InstID03 CHAR(13) = NULL,
     @InstID04 CHAR(13) = NULL,
     ..... and so on and so forth up to ...
     @InstID99 CHAR(13) = NULL,
     @InstID100 CHAR(13) = NULL
)
AS
BEGIN
    SET NOCOUNT ON

    SELECT DISTINCT 
        i.InstrumentID, i.Status, i.Product, i.SysDescription, 
        e.TradeAdminStatus, CONVERT(DATE, @calDate) AS PayDate
    FROM 
        Instrument i 
    LEFT OUTER JOIN 
        EXTTradeStatus e ON (i.InstrumentID = e.InstrumentID) 
                         AND (i.VersionNumber = e.VersionNumber)
    INNER JOIN 
        EXTBreakClause b ON (i.InstrumentID = b.InstrumentID)
                         AND (i.VersionNumber = b.VersionNumber)
    WHERE 
       (i.VersionNumber = 0)
       AND i.InstrumentID IN (@InstID01, @InstID02, @InstID03, 
                               ......
                              @InstID97, @InstID98, @InstID99, @InstID100)
       AND (@holCalID IN (SELECT value
                          FROM
                              (SELECT 
                                   CONVERT(XML, CONVERT(VARBINARY(MAX), b.BreakClauseDefn))) AS BCD(X)   
                          CROSS APPLY 
                              BCD.X.nodes('//Definitions/BreakDefn/NotificationHolidayCalendar/text()') NHC(X)
                          CROSS APPLY 
                              string_split(NHC.X.value('.', 'varchar(max)'), ',')
                        )
                        OR
                        @holCalID IN (SELECT value
                                      FROM
                                          (SELECT CONVERT(XML, CONVERT(varbinary(MAX), b.BreakClauseDefn))) AS BCD(X)   
                                      CROSS APPLY BCD.X.nodes('//Definitions/BreakDefn/ExerciseHolidayCalendar/text()') EHC(X)
                                      CROSS APPLY string_split(EHC.X.value('.', 'varchar(max)'), ',')
    )
)
AND
(
    CONVERT(DATE, @calDate) in
    (
        SELECT CONVERT(DATE, ND.X.value('.', 'varchar(max)'))
        FROM  
        (SELECT CONVERT(XML, CONVERT(varbinary(MAX),b.BreakClauseSchedule))) AS BCS(X)   
        CROSS APPLY BCS.X.nodes('//Schedule/Event/NotificationDate/text()') ND(X)   
    )
    OR
    CONVERT(DATE, @calDate) in
    (
        SELECT CONVERT(DATE, ED.X.value('.', 'varchar(max)'))
        FROM  
        (SELECT CONVERT(XML, CONVERT(varbinary(MAX),b.BreakClauseSchedule))) AS BCS(X)   
        CROSS APPLY BCS.X.nodes('//Schedule/Event/ExerciseDate/text()') ED(X)   
    )
) 

SET NOCOUNT OFF

END
GO

EXECUTE Create_Permissions 'dbo.TAHolidayCal_FindBrkCls'
GO

...