2015-01-22 3 views
1

동적 MS SQL 쿼리에 문제가 있습니다. 누군가 나를 도울 수 있습니까? 여기 내 코드가있다. 문제는 OPENQUERY 내부에 '1033'동적 MS SQL 쿼리

DECLARE @sql nvarchar(max); 
    DECLARE @server nvarchar(255) = (SELECT [Value] FROM [WarehouseMgmt].[SyncConfig] WHERE [Key] = 'ReportServerLinkedServer') 
    DECLARE @database nvarchar(255) = (SELECT [Value] FROM [WarehouseMgmt].[SyncConfig] WHERE [Key] = 'ReportServerDatabase') 




SET @sql = 'MERGE [WarehouseMgmt].[DimReportServerReports] AS DRSR 
    USING (SELECT ItemId,Name FROM OPENQUERY('[email protected]+',''SELECT ItemId,Name FROM '[email protected]+'.[dbo].[Catalog] WHERE Type=2 AND Name NOT LIKE ''1033%'' AND Path NOT LIKE ''/Reports/%Subs'') 
    ) AS CATALOG 
    ON (DRSR.[SourceOrigId] = [Catalog].[ItemId]) 
    WHEN NOT MATCHED BY TARGET THEN 
     INSERT 
     (
      [SourceOrigId], 
      [ReportName], 
      SyncExecId 
     ) 
     VALUES 
     (
      [Catalog].[ItemId], 
      ISNULL([Catalog].[Name],''<UNKNOWN>''), 
      @SyncExecId 
     ) 
    OUTPUT 
      [Catalog].[ItemId], 
      [Catalog].[Name] 
    INTO #NewReportServerReports;' 

    EXEC sp_executesql @sql,N'@SyncExecId int',@SyncExecId 

오류 코드는, 가까이 :

메시지 50000, 수준 11, 상태 1, 프로 시저 WriteJobLog, 라인 (101) 오류 쓰기 작업 로그 : 라인 # 90 : [ERR] # 2 : '1033'근처의 구문이 잘못되었습니다.

+0

당신은 당신이 마지막 –

+0

를 SQL에 의해 생성 된 오류를 게시 할 수 있을까? 문자 근처? –

+0

에서 열린 조회에 대한 폐쇄 '' '(작은 따옴표)를 누락 .. – Fox

답변

0

일부 추가 quotes. 이 시도.

SET @sql = 'MERGE [WarehouseMgmt].[DimReportServerReports] AS DRSR 
    USING (SELECT ItemId,Name FROM OPENQUERY('[email protected]+',''SELECT ItemId,Name FROM '[email protected]+'.[dbo].[Catalog] WHERE 
    Type=2 AND Name NOT LIKE ''''1033%'''' AND Path NOT LIKE ''''/Reports/%Subs'''''') 
    ) AS CATALOG 
    ON (DRSR.[SourceOrigId] = [Catalog].[ItemId]) 
    WHEN NOT MATCHED BY TARGET THEN 
     INSERT 
     (
      [SourceOrigId], 
      [ReportName], 
      SyncExecId 
     ) 
     VALUES 
     (
      [Catalog].[ItemId], 
      ISNULL([Catalog].[Name],''<UNKNOWN>''), 
      @SyncExecId 
     ) 
    OUTPUT 
      [Catalog].[ItemId], 
      [Catalog].[Name] 
    INTO #NewReportServerReports;' 
    --print @sql 
    EXEC sp_executesql @sql,N'@SyncExecId int',@SyncExecId