0

I've build one view. I can run sys.databases from the linked server. However, when I tried to execute the following view. It is not retrieving any data from the linked server.

USE [SSISDB]

GO

/****** Object:  View [dbo].[Vw_SSISDBLog]    Script Date: 8/29/2023 1:38:03 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO




CREATE     VIEW [dbo].[Vw_SSISDBLog]
AS
SELECT  [execution_id]
      ,[folder_name]
      ,[project_name]
      ,[package_name]
      ,[executed_as_name]
      ,[status]
      ,[start_time]
      ,[end_time]
      ,CONVERT (DATETIME2,[start_time]) AS start_date
    ,CONVERT (DATETIME2, [end_time]) AS end_date
    --,CONVERT(CHAR(10),[start_time],108) AS starttime
    --,CONVERT(CHAR(10),[end_time],108) AS endtime
    ,DATEDIFF(SECOND,CONVERT(DATETIME,[start_time]),CONVERT(DATETIME,[end_time])) AS 'Duration In Seconds'
    --CONVERT(,DATEDIFF(millisecond, [start_time], ISNULL([end_time], SYSDATETIMEOFFSET())))/1000 AS duration,
    
     , [process_id]
      ,[stopped_by_sid]
      ,[stopped_by_name]
      ,[server_name]
      ,[machine_name]
      ,CASE 
                    WHEN [status] = 1 THEN 'Created'
                    WHEN [status] = 2 THEN 'Running'
                    WHEN [status] = 3 THEN 'Canceled'
                    WHEN [status] = 4 THEN 'Failed'
                    WHEN [status] = 5 THEN 'Pending'
                    WHEN [status] = 6 THEN 'Ended Unexpectedly'
                    WHEN [status] = 7 THEN 'Succeeded'
                    WHEN [status] = 8 THEN 'Stopping'
                    WHEN [status] = 9 THEN 'Completed'
                   END AS [status desc]
 --, Year(CONVERT (datetime, [start_time])) As start_time_year
  --,DATEADD(DAY,-1,CONVERT (datetime, [start_time])) AS PREVIOUSDT
 --, DateName(mm, CONVERT (datetime, [start_time])) As start_time_month_name

  FROM [SSISDB].[internal].[execution_info]
  WHERE 
--  [STATUS] IN (3,4,6,8)
  --AND CONVERT (datetime, [start_time]) BETWEEN  DATEADD(DAY,-2,CONVERT (CHAR(10),[start_time],126)) And SYSDATETIME()
 --AND 
CONVERT (CHAR(10),[start_time],126)>= CAST(DATEADD(DAY, -2,SYSDATETIME()) AS DATE)
AND CONVERT(CHAR(10),[start_time],126) <= CAST(SYSDATETIME() AS DATE)
  --ORDER BY execution_id DESC
GO

Above is my view which has 216 rows. However, I'm not able to retrieve using linked server.

On the other hand, when I tried to run same database view. It works just fine.

    USE [SSISDB]
    USE [SSISDB]
    GO
    
   

     /****** Object:  View [dbo].[Vw_JobDetailsS1]    Script Date: 8/29/2023 1:43:47 PM ******/
        SET ANSI_NULLS ON
        GO
        
        SET QUOTED_IDENTIFIER ON
        GO
        
        
        
        

    CREATE     VIEW [dbo].[Vw_JobDetailsS1]
    AS
    SELECT 
     --SERVERPROPERTY('Servername') AS ServerName,
    --categories.NAME AS CategoryName,
     jobs.name
     ,SUSER_SNAME(jobs.owner_sid) AS OwnerID
     ,CASE jobs.enabled WHEN 1 THEN 'Yes' ELSE 'No'END AS Enabled
     ,CASE schedule.enabled WHEN 1 THEN 'Yes' ELSE 'No' END AS Scheduled
     ,jobs.description
     ,CASE WHEN jobs.description ='This job is owned by a report server process. Modifying this job could result in database incompatibilities. Use Report Manager or Management Studio to update this job.' THEN 'Yes' ELSE 'No' END AS ReportServerJob
     ,CASE schedule.freq_type
      WHEN 1 THEN 'Once'
      WHEN 4 THEN 'Daily'
      WHEN 8 THEN 'Weekly'
      WHEN 16 THEN 'Monthly'
      WHEN 32 THEN 'Monthly relative'
      WHEN 64 THEN 'When SQL Server Agent starts'
      WHEN 128 THEN 'Start whenever the CPU(s) become idle'
      ELSE ''
      END AS FrequencyType
     ,CASE schedule.freq_type
      WHEN 1 THEN 'O'
      WHEN 4 THEN 'Every ' + CONVERT(VARCHAR, schedule.freq_interval) + ' day(s)'
      WHEN 8 THEN 'Every ' + CONVERT(VARCHAR, schedule.freq_recurrence_factor) + ' weeks(s) on ' + LEFT(CASE 
          WHEN schedule.freq_interval & 1 = 1
           THEN 'Sunday, '
          ELSE ''
          END + CASE 
          WHEN schedule.freq_interval & 2 = 2
           THEN 'Monday, '
          ELSE ''
          END + CASE 
          WHEN schedule.freq_interval & 4 = 4
           THEN 'Tuesday, '
          ELSE ''
          END + CASE 
          WHEN schedule.freq_interval & 8 = 8
           THEN 'Wednesday, '
          ELSE ''
          END + CASE 
          WHEN schedule.freq_interval & 16 = 16
           THEN 'Thursday, '
          ELSE ''
          END + CASE 
          WHEN schedule.freq_interval & 32 = 32
           THEN 'Friday, '
          ELSE ''
          END + CASE 
          WHEN schedule.freq_interval & 64 = 64
           THEN 'Saturday, '
          ELSE ''
          END, LEN(CASE 
           WHEN schedule.freq_interval & 1 = 1
            THEN 'Sunday, '
           ELSE ''
           END + CASE 
           WHEN schedule.freq_interval & 2 = 2
            THEN 'Monday, '
           ELSE ''
           END + CASE 
           WHEN schedule.freq_interval & 4 = 4
            THEN 'Tuesday, '
           ELSE ''
           END + CASE 
           WHEN schedule.freq_interval & 8 = 8
            THEN 'Wednesday, '
           ELSE ''
           END + CASE 
           WHEN schedule.freq_interval & 16 = 16
            THEN 'Thursday, '
           ELSE ''
           END + CASE 
           WHEN schedule.freq_interval & 32 = 32
            THEN 'Friday, '
           ELSE ''
           END + CASE 
           WHEN schedule.freq_interval & 64 = 64
            THEN 'Saturday, '
           ELSE ''
           END) - 1)
      WHEN 16
       THEN 'Day ' + CONVERT(VARCHAR, schedule.freq_interval) + ' of every ' + CONVERT(VARCHAR, schedule.freq_recurrence_factor) + ' month(s)'
      WHEN 32
       THEN 'The ' + CASE schedule.freq_relative_interval
         WHEN 1
          THEN 'First'
         WHEN 2
          THEN 'Second'
         WHEN 4
          THEN 'Third'
         WHEN 8
          THEN 'Fourth'
         WHEN 16
          THEN 'Last'
         END + CASE schedule.freq_interval
         WHEN 1
          THEN ' Sunday'
         WHEN 2
          THEN ' Monday'
         WHEN 3
          THEN ' Tuesday'
         WHEN 4
          THEN ' Wednesday'
         WHEN 5
          THEN ' Thursday'
         WHEN 6
          THEN ' Friday'
         WHEN 7
          THEN ' Saturday'
         WHEN 8
          THEN ' Day'
         WHEN 9
          THEN ' Weekday'
         WHEN 10
          THEN ' Weekend Day'
         END + ' of every ' + CONVERT(VARCHAR, schedule.freq_recurrence_factor) + ' month(s)'
      ELSE ''
      END AS Occurence
     ,CASE schedule.freq_subday_type
      WHEN 1
       THEN 'Occurs once at ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), schedule.active_start_time), 6), 5, 0, ':'), 3, 0, ':')
      WHEN 2
       THEN 'Occurs every ' + CONVERT(VARCHAR, schedule.freq_subday_interval) + ' Seconds(s) between ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), schedule.active_start_time), 6), 5, 0, ':'), 3, 0, ':') + ' and ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), schedule.active_end_time), 6), 5, 0, ':'), 3, 0, ':')
      WHEN 4
       THEN 'Occurs every ' + CONVERT(VARCHAR, schedule.freq_subday_interval) + ' Minute(s) between ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), schedule.active_start_time), 6), 5, 0, ':'), 3, 0, ':') + ' and ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), schedule.active_end_time), 6), 5, 0, ':'), 3, 0, ':')
      WHEN 8
       THEN 'Occurs every ' + CONVERT(VARCHAR, schedule.freq_subday_interval) + ' Hour(s) between ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), schedule.active_start_time), 6), 5, 0, ':'), 3, 0, ':') + ' and ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), schedule.active_end_time), 6), 5, 0, ':'), 3, 0, ':')
      ELSE ''
      END AS Frequency
     --,CONVERT(DECIMAL(10, 2), jobhistory.AverageDurationInSeconds) AverageDurationSeconds
     --,CONVERT(VARCHAR, DATEADD(s, ISNULL(CONVERT(DECIMAL(10, 2), jobhistory.AverageDurationInSeconds), 0), 0), 108) AS AverageDuration
     ,CASE jobschedule.next_run_date
      WHEN 0
       THEN CONVERT(DATETIME, '1900/1/1')
      ELSE CONVERT(DATETIME, CONVERT(CHAR(8), jobschedule.next_run_date, 112) + ' ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), jobschedule.next_run_time), 6), 5, 0, ':'), 3, 0, ':'))
      END NextScheduledRunDate
    ,lastrunjobhistory.LastRunDate
    ,ISNULL(lastrunjobhistory.run_status_desc,'Unknown') AS run_status_desc
    ,ISNULL(lastrunjobhistory.RunTimeInSeconds, 0) AS RunTimeInSeconds
    ,CONVERT(VARCHAR, DATEADD(s, ISNULL(lastrunjobhistory.RunTimeInSeconds, 0), 0), 108) AS RunTime
    ,lastrunjobhistory.message  
    FROM msdb.dbo.sysjobs AS jobs
    LEFT JOIN msdb.dbo.sysjobschedules AS jobschedule
     ON jobs.job_id = jobschedule.job_id
    LEFT JOIN msdb.dbo.sysschedules AS schedule
     ON jobschedule.schedule_id = schedule.schedule_id
    INNER JOIN msdb.dbo.syscategories categories
     ON jobs.category_id = categories.category_id
     AND jobs.enabled=1
    
     --LEFT OUTER JOIN (
    -- SELECT sysjobhist.job_id
    --  ,(SUM(((sysjobhist.run_duration / 10000 * 3600) + ((sysjobhist.run_duration % 10000) / 100 * 60) + (sysjobhist.run_duration % 10000) % 100)) * 1.0) / Count(sysjobhist.job_id) AS AverageDurationInSeconds
    -- FROM msdb.dbo.sysjobhistory AS sysjobhist
    -- WHERE sysjobhist.step_id = 0
    -- GROUP BY sysjobhist.job_id
    -- ) AS jobhistory
    -- ON jobhistory.job_id = jobs.job_id  -- to get the average duration
    LEFT OUTER JOIN
    (
    SELECT sysjobhist.job_id
     ,CASE sysjobhist.run_date
      WHEN 0
       THEN CONVERT(DATETIME, '1900/1/1')
      ELSE CONVERT(DATETIME, CONVERT(CHAR(8), sysjobhist.run_date, 112) + ' ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), sysjobhist.run_time), 6), 5, 0, ':'), 3, 0, ':'))
      END AS LastRunDate
     ,sysjobhist.run_status
     ,CASE sysjobhist.run_status
      WHEN 0
       THEN 'Failed'
      WHEN 1
       THEN 'Succeeded'
      WHEN 2
       THEN 'Retry'
      WHEN 3
       THEN 'Canceled'
      WHEN 4
       THEN 'In Progress'
      ELSE 'Unknown'
      END AS run_status_desc
     ,sysjobhist.retries_attempted
     ,sysjobhist.step_id
     ,sysjobhist.step_name
     ,sysjobhist.run_duration AS RunTimeInSeconds
     ,sysjobhist.message
     ,ROW_NUMBER() OVER (
      PARTITION BY sysjobhist.job_id ORDER BY CASE sysjobhist.run_date
        WHEN 0
         THEN CONVERT(DATETIME, '1900/1/1')
        ELSE CONVERT(DATETIME, CONVERT(CHAR(8), sysjobhist.run_date, 112) + ' ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), sysjobhist.run_time), 6), 5, 0, ':'), 3, 0, ':'))
        END DESC
      ) AS RowOrder
    FROM msdb.dbo.sysjobhistory AS sysjobhist
    WHERE sysjobhist.step_id = 0  --to get just the job outcome and not all steps
    )AS lastrunjobhistory
     ON lastrunjobhistory.job_id = jobs.job_id  -- to get the last run details
     AND
     lastrunjobhistory.RowOrder=1
    
     --select * into #temp2 from jobinfoS1_CTE;
     --drop table #temp;
    -- select * from #temp2;
    --declare @xml nvarchar(max) 
    --set @xml = CAST(( SELECT --[ServerName] AS 'td','',
    ----[CategoryName] AS 'td','', 
    --[name] AS 'td','', 
    --[OwnerID] AS 'td','',
    --[Enabled] AS 'td','',
    --[Scheduled] As 'td','',
    --[description] As 'td','',
    --[ReportServerJob] as 'td','',
    --[FrequencyType] as 'td','',
    --[Occurence] as 'td','',
    --[Frequency] as 'td','',
    --[NextScheduledRunDate] as 'td','',
    --[LastRunDate] as 'td','',
    --[run_status_desc] as 'td','',
    --[RunTimeInSeconds] as 'td','',
    --[RunTime] as 'td','',
    --[message] as 'td'
    --FROM #temp2
    --ORdeR BY [Name] 
    --FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
    
    --declare @body nvarchar(max)='<html><body><H3>'+@@SERVERName+' Job Detailed Information</H3>
    --<style>body {font-family:Arial; font-size:11;} table {border-collapse:collapse;}</style>
    --<table border = 1>
    
    --<tr>
    --<th> Server Name </th> <th> Category Name </th> <th> Name </th>
    --<th> OwnerId </th><th> Enabled </th><th> Scheduled </th><th> Description </th>
    --<th> ReportServerJob </th> <th> FequencyType </th> <th> Occurence </th>
    --<th> Frequency </th> <th> NextScheduledRunDate </th> <th> LastRunDate </th>
    --<th> run_status_desc </th> <th> RunTimeInSeconds </th> <th> RunTime </th>
    --<th> message </th>
    --</tr>'    
    
    --SET @body = @body + @xml +'</table></body></html>'
    
    --set @body = '<table cellpadding="2" cellspacing="2" border="1">'
              
    --          + replace( replace( @body, '&lt;', '<' ), '&gt;', '>' )
    --          + '</table>'
    
    
    
    
    GO

Also, I'm using following select statement to retrieve data from linkedserver.

'select * from SSISDB.dbo.Vw_SSISDBLog')

SELECT * FROM OPENQUERY([ETL],
'select name,OwnerId,Enabled,Scheduled,description,ReportServerJob,FrequencyType,
Occurence,Frequency,NextScheduledRunDate,LastRunDate,run_status_desc,
runTime,runTimeInSeconds,message from SSISDB.dbo.Vw_JobDetailsS1')



Any advise would be appreciated

1

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.