Как отобразить вывод символов в SQL Server? - PullRequest
0 голосов
/ 10 октября 2019

Когда я запускаю следующую команду select:

SELECT 
    [Event] = CAST('Get the latest FULL backup' AS CHAR(108)),
    [backup_set_id]    = b.backup_set_id,
    [MediaSetID]       = b.media_set_id,
    backup_start_date  = b.backup_start_date,
    backup_finish_date = b.backup_finish_date,
    [Backup Type]      = b.type
FROM 
    msdb.dbo.backupset b
WHERE 
    backup_set_id = 238456

UNION ALL

SELECT 
    [Event] = CAST('Get the latest DIFFERENTIAL backup if any' AS CHAR(108)),
    [backup_set_id]    = b.backup_set_id,
    [MediaSetID]       = b.media_set_id,
    backup_start_date  = b.backup_start_date,
    backup_finish_date = b.backup_finish_date,
    [Backup Type]      = b.type
FROM 
    msdb.dbo.backupset b
WHERE 
    backup_set_id = 238474

UNION ALL

SELECT 
    [Event] = CAST('Get the LOG backup(s) if any' AS CHAR(108)),
    [backup_set_id]    = b.backup_set_id,
    [MediaSetID]       = b.media_set_id,
    backup_start_date  = b.backup_start_date,
    backup_finish_date = b.backup_finish_date,
    [Backup Type]      = b.type
FROM 
    msdb.dbo.backupset b
WHERE 
    backup_set_id = 239558

Все возвращается очень хорошо выровненным, все столбцы - особенно первый, который меня больше всего интересует - занимают ровно столько же места, и этоочистить.

enter image description here

Однако, когда мне нужно выполнить эти выборки внутри процедуры, без использования union all, так как они создаются в разных частяххранимой процедуры - я все еще хотел видеть все столбцы, отформатированные как прежде - занимая такое же количество места, особенно первый столбец.

, что не так, как вы можете видеть на рисунке ниже:

enter image description here

Вопрос в том, как это сделать - все эти различные варианты выбора будут отображаться, как и прежде, особенно первый столбец?

1 Ответ

0 голосов
/ 10 октября 2019

из комментария Джейкоба H

Создайте таблицу #temp в вашем sproc и вставьте результаты из ваших отдельных операторов. Затем запросите временную таблицу одним запросом. Вы возвращаете более 3 различных наборов данных из процедуры, и она работает точно так, как ожидалось.

Я создал временную таблицу, и в разных частях моей процедуры вместо выбора я вставляю данныево временную таблицу.

В конце моей процедуры я выдаю выбор из временной таблицы. Это показано в приведенном ниже коде.

                SET NOCOUNT ON
                IF OBJECT_ID('tempdb.dbo.#radhe_sp_getRestoreScripts') IS NOT NULL 
                        DROP TABLE #radhe_sp_getRestoreScripts

                CREATE TABLE #radhe_sp_getRestoreScripts( 
                [Event]               CHAR(108)                            NULL,
                [backup_set_id]       INT                                  NULL,
                [MediaSetID]          INT                                  NULL,
                [backup_start_date]   DATETIME                             NULL,
                [backup_finish_date]  DATETIME                             NULL,
                [Backup Type]         CHAR(1)                              NULL)


                INSERT INTO #radhe_sp_getRestoreScripts( 
                [Event]               ,
                [backup_set_id]       ,
                [MediaSetID]          ,
                [backup_start_date]   ,
                [backup_finish_date]  ,
                [Backup Type]         )
                SELECT 
                    [Event] = CAST('Get the latest FULL backup' AS CHAR(108)),
                    [backup_set_id]    = b.backup_set_id,
                    [MediaSetID]       = b.media_set_id,
                    backup_start_date  = b.backup_start_date,
                    backup_finish_date = b.backup_finish_date,
                    [Backup Type]      = b.type
                FROM 
                    msdb.dbo.backupset b
                WHERE 
                    backup_set_id = 238456



                INSERT INTO #radhe_sp_getRestoreScripts( 
                [Event]               ,
                [backup_set_id]       ,
                [MediaSetID]          ,
                [backup_start_date]   ,
                [backup_finish_date]  ,
                [Backup Type]         )
                SELECT 
                    [Event] = CAST('Get the latest DIFFERENTIAL backup if any' AS CHAR(108)),
                    [backup_set_id]    = b.backup_set_id,
                    [MediaSetID]       = b.media_set_id,
                    backup_start_date  = b.backup_start_date,
                    backup_finish_date = b.backup_finish_date,
                    [Backup Type]      = b.type
                FROM 
                    msdb.dbo.backupset b
                WHERE 
                    backup_set_id = 238474



                INSERT INTO #radhe_sp_getRestoreScripts( 
                [Event]               ,
                [backup_set_id]       ,
                [MediaSetID]          ,
                [backup_start_date]   ,
                [backup_finish_date]  ,
                [Backup Type]         )
                SELECT 
                    [Event] = CAST('Get the LOG backup(s) if any' AS CHAR(108)),
                    [backup_set_id]    = b.backup_set_id,
                    [MediaSetID]       = b.media_set_id,
                    backup_start_date  = b.backup_start_date,
                    backup_finish_date = b.backup_finish_date,
                    [Backup Type]      = b.type
                FROM 
                    msdb.dbo.backupset b
                WHERE 
                    backup_set_id = 239558


            SELECT
                [Event]               ,
                [backup_set_id]       ,
                [MediaSetID]          ,
                [backup_start_date]   ,
                [backup_finish_date]  ,
                [Backup Type] 
            FROM #radhe_sp_getRestoreScripts

, и это набор результатов (очень хорошо отображается):

enter image description here

...