AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 115798
Accepted
billinkc
billinkc
Asked: 2015-09-23 08:35:54 +0800 CST2015-09-23 08:35:54 +0800 CST 2015-09-23 08:35:54 +0800 CST

Meu SQL Server está corrigido?

  • 772

Como posso saber se minhas instâncias do SQL Server foram corrigidas? Existe uma funcionalidade nativa que identificará se há patches disponíveis para o meu servidor? Heck, eu ainda tenho dados de versão disponíveis para mim?

sql-server
  • 1 1 respostas
  • 6828 Views

1 respostas

  • Voted
  1. Best Answer
    billinkc
    2015-09-23T08:35:54+08:002015-09-23T08:35:54+08:00

    Para responder na ordem inversa

    Em que versão estou?

    Existem duas consultas diferentes que uso para identificar meu nível do SQL Server.

    A primeira é @@version . O bom disso é que ele também traz de volta as informações do nível do sistema operacional. O desafio é que é um grande despejo de texto e você precisa analisá-lo para encontrar os bits relevantes.

    por exemplo

    SELECT @@version;
    
    /*
    Microsoft SQL Server 2014 - 12.0.4416.0 (X64) 
        Jun 11 2015 19:18:41 
        Copyright (c) Microsoft Corporation
        Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
    */
    

    Minha preferência é usar ServerPropertiescomo posso identificar individualmente os elementos.

    SELECT 
        SERVERPROPERTY('productversion') AS ProductVersion
    ,   SERVERPROPERTY ('productlevel') AS ProductLevel
    ,   SERVERPROPERTY ('edition') AS Edition;
    
    /*
    ProductVersion  ProductLevel    Edition
    12.0.4416.0     SP1             Developer Edition (64-bit)
    */
    

    Existe funcionalidade nativa para verificar se há patches?

    Nada que eu saiba. Se o sistema operacional host tiver o serviço Windows Update em execução e alguém tiver especificado "Incluir patches para outros produtos MS", você poderá obter patches instalados para o SQL Server.

    Mas, se você for um profissional, provavelmente não está interessado em esperar que um patch seja listado no WSUS ou gostaria de validar se o patch funciona para o seu ambiente. Isso envolverá a leitura de artigos da base de conhecimento (KB) e testes.

    Como posso saber se minhas instâncias do SQL Server foram corrigidas?

    Na falta de qualquer coisa incorporada ao produto, tenho referenciado sqlserverbuilds.blogspot.com . Mas existem muitos outros sites tentando oferecer a mesma lista consolidada de patches, como:

    • http://sqlserverupdates.com/
    • http://blogs.sqlsentry.com/category/sql-server-builds/

    Peguei os dados desse blog e os converti em uma exibição, dbo.PatchLevel. Essa visão expõe todos os patches. Essa exibição é truncada para cobrir apenas 2016 e 2014, caso contrário, estouro o limite de caracteres para respostas.

    CREATE VIEW dbo.PatchLevel
    AS
    -- data from http://sqlserverbuilds.blogspot.com
    WITH SRC(Build,[File version],[KB / Description],[Release Date], SimpleVersion) AS
    (
        SELECT
            CASE LEN(D.Build) - LEN(REPLACE(D.Build, '.', ''))
                WHEN 3 THEN REPLACE(D.Build, '.00.', '.0.')
                WHEN 2 THEN REPLACE(D.Build, '.00.', '.0.') + '.0'
            END AS Build
        ,   D.FileVersion
        ,   D.KB
        ,   CAST(REPLACE(D.ReleaseDate, ' *new', '') AS date) AS ReleaseDate
        ,   CAST(LEFT(D.Build, 4) AS decimal(4,2))
        FROM
        (
            VALUES
                ('13.00.500.53','2016.130.500.53','Microsoft SQL Server 2016 Community Technology Preview 2.3 (CTP2.3)','August 28, 2015 *new')
            ,   ('13.00.407.1','2016.130.407.1','Microsoft SQL Server 2016 Community Technology Preview 2.2 (CTP2.2)','July 23, 2015')
            ,   ('13.00.400.91','2016.130.400.91','Microsoft SQL Server 2016 Community Technology Preview 2.2 (CTP2.2) [withdrawn]','July 22, 2015')
            ,   ('13.00.300.44','2016.130.300.444','Microsoft SQL Server 2016 Community Technology Preview 2.1 (CTP2.1)','June 24, 2015')
            ,   ('13.00.200.172','2016.130.200.172','Microsoft SQL Server 2016 Community Technology Preview 2 (CTP2)','May 27, 2015')
            ,   ('12.00.4427','2014.120.4427.24','3094221 Cumulative update package 3 (CU3) for SQL Server 2014 Service Pack 1','October 21, 2015 *new')
            ,   ('12.00.4422','2014.120.4422.0','3075950 Cumulative update package 2 (CU2) for SQL Server 2014 Service Pack 1','August 17, 2015')
            ,   ('12.00.4416','2014.120.4416.0','3067839 Cumulative update package 1 (CU1) for SQL Server 2014 Service Pack 1','June 22, 2015')
            ,   ('12.00.4213','2014.120.4213.0','MS15-058: Description of the nonsecurity update for SQL Server 2014 Service Pack 1 GDR: July 14, 2015','July 14, 2015')
            ,   ('12.00.4100','2014.120.4100.1','SQL Server 2014 Service Pack 1 (SP1)','May 14, 2015')
            ,   ('12.00.4050','2014.120.4050.0','SQL Server 2014 Service Pack 1 (SP1) [withdrawn]','April 15, 2015')
            ,   ('12.00.2556','2014.120.2556.4','3094220 Cumulative update package 10 (CU10) for SQL Server 2014','October 20, 2015 *new')
            ,   ('12.00.2553','2014.120.2553.0','3075949 Cumulative update package 9 (CU9) for SQL Server 2014','August 17, 2015')
            ,   ('12.00.2548','2014.120.2548.0','MS15-058: Description of the security update for SQL Server 2014 QFE: July 14, 2015','July 14, 2015')
            ,   ('12.00.2546','2014.120.2546.0','3067836 Cumulative update package 8 (CU8) for SQL Server 2014','June 22, 2015')
            ,   ('12.00.2506','2014.120.2506.0','3063054 Update enables Premium Storage support for Data files on Azure Storage and resolves backup failures','May 19, 2015')
            ,   ('12.00.2505','2014.120.2505.0','3052167 FIX: Error 1205 when you execute parallel query that contains outer join operators in SQL Server 2014','May 19, 2015')
            ,   ('12.00.2504','2014.120.2504.0','2999809 FIX: Poor performance when a query contains table joins in SQL Server 2014','May 5, 2015')
            ,   ('12.00.2504','2014.120.2504.0','3058512 FIX: Unpivot Transformation task changes null to zero or empty strings in SSIS 2014','May 5, 2015')
            ,   ('12.00.2495','2014.120.2495.0','3046038 Cumulative update package 7 (CU7) for SQL Server 2014','April 23, 2015')
            ,   ('12.00.2488','2014.120.2488.0','3048751 FIX: Deadlock cannot be resolved automatically when you run a SELECT query that can result in a parallel batch-mode scan','April 1, 2015')
            ,   ('12.00.2485','2014.120.2485.0','3043788 An on-demand hotfix update package is available for SQL Server 2014','March 16, 2015')
            ,   ('12.00.2480','2014.120.2480.0','3031047 Cumulative update package 6 (CU6) for SQL Server 2014','February 16, 2015')
            ,   ('12.00.2474','2014.120.2474.0','3034679 FIX: AlwaysOn availability groups are reported as NOT SYNCHRONIZING','May 15, 2015')
            ,   ('12.00.2472','2014.120.2472.0','3032087 FIX: Cannot show requested dialog after you connect to the latest SQL Database Update V12 (preview) with SQL Server 2014','January 28, 2015')
            ,   ('12.00.2464','2014.120.2464.0','3024815 Large query compilation waits on RESOURCE_SEMAPHORE_QUERY_COMPILE in SQL Server 2014','January 5, 2015')
            ,   ('12.00.2456','2014.120.2456.0','3011055 Cumulative update package 5 (CU5) for SQL Server 2014','December 18, 2014')
            ,   ('12.00.2436','2014.120.2436.0','3014867 FIX: "Remote hardening failure" exception cannot be caught and a potential data loss when you use SQL Server 2014','November 27, 2014')
            ,   ('12.00.2430','2014.120.2430.0','2999197 Cumulative update package 4 (CU4) for SQL Server 2014','October 21, 2014')
            ,   ('12.00.2423','2014.120.2423.0','3007050 FIX: RTDATA_LIST waits when you run natively stored procedures that encounter expected failures in SQL Server 2014','October 22, 2014')
            ,   ('12.00.2405','2014.120.2405.0','2999809 FIX: Poor performance when a query contains table joins in SQL Server 2014','September 25, 2014')
            ,   ('12.00.2402','2014.120.2402.0','2984923 Cumulative update package 3 (CU3) for SQL Server 2014','August 18, 2014')
            ,   ('12.00.2381','2014.120.2381.0','2977316 MS14-044: Description of the security update for SQL Server 2014 (QFE)','August 12, 2014')
            ,   ('12.00.2370','2014.120.2370.0','2967546 Cumulative update package 2 (CU2) for SQL Server 2014','June 27, 2014')
            ,   ('12.00.2342','2014.120.2342.0','2931693 Cumulative update package 1 (CU1) for SQL Server 2014','April 21, 2014')
            ,   ('12.00.2269','2014.120.2269.0','3045324 MS15-058: Description of the security update for SQL Server 2014 GDR: July 14, 2015','July 14, 2015')
            ,   ('12.00.2254','2014.120.2254.0','2977315 MS14-044: Description of the security update for SQL Server 2014 (GDR)','August 12, 2014')
            ,   ('12.00.2000','2014.120.2000.8','SQL Server 2014 RTM','April 1, 2014')
            ,   ('12.00.1524','2014.120.1524.0','Microsoft SQL Server 2014 Community Technology Preview 2 (CTP2)','October 15, 2013')
        ) D(Build,FileVersion,KB,ReleaseDate)
    )
    SELECT
        SRC.Build
    ,   SRC.[File version]
    ,   SRC.[KB / Description]
    ,   SRC.[Release Date]
    ,   SRC.SimpleVersion
    FROM
        SRC;
    GO
    

    Eu tenho uma segunda visão, sim visão aninhada - ruim para mim, dbo.MyPatchLevel que usa os dados da versão acima para comparar com minha instância atual e gerar saída para me informar o quão ruim é.

    CREATE VIEW dbo.MyPatchLevel
    AS
    WITH MostRecentBuild AS
    (
        SELECT
            SRC.Build
        ,   SRC.[Release Date]
        ,   SRC.SimpleVersion
        ,   SRC.[KB / Description]
        FROM
            dbo.PatchLevel AS SRC
        WHERE
            SRC.[Release Date] =
        (
            SELECT
                MAX(SRCI.[Release Date])
            FROM
                dbo.PatchLevel AS SRCI
            WHERE
                SRCI.SimpleVersion = SRC.SimpleVersion
        )
        AND
            SRC.Build =
        (
            SELECT
                MAX(SRCI.Build)
            FROM
                dbo.PatchLevel AS SRCI
            WHERE
                SRCI.SimpleVersion = SRC.SimpleVersion
                AND SRCI.[Release Date] = SRC.[Release Date]
        )
    
    )
    , MyVersion AS
    (
        SELECT
            SRC.Build
        ,   SRC.[File version]
        ,   MRB.[KB / Description]
        ,   SRC.[Release Date]
        ,   D.ProductVersion
        ,   D.ProductLevel
        ,   D.Edition
        ,   D.Version
        ,   SRC.SimpleVersion
        ,   MRB.Build AS MostRecentBuild
        ,   MRB.[Release Date] AS MostRecentReleaseDate
        FROM
            dbo.PatchLevel AS SRC
            INNER JOIN
            (
                SELECT 
                    SERVERPROPERTY('productversion') AS ProductVersion
                ,   SERVERPROPERTY ('productlevel') AS ProductLevel
                ,   SERVERPROPERTY ('edition') AS Edition
                ,   @@VERSION AS Version
            )D 
            ON D.ProductVersion  = SRC.Build
            INNER JOIN
                MostRecentBuild AS MRB
                ON MRB.SimpleVersion = SRC.SimpleVersion
    )
    SELECT
        MV.ProductVersion AS CurrentVersion
    ,   MV.MostRecentBuild
    ,   MV.[Release Date]
    ,   MV.MostRecentReleaseDate
    ,   DATEDIFF(DAY, MV.[Release Date], MV.MostRecentReleaseDate) AS DaysSincePatchAvailable
    ,   MV.[File version]
    ,   MV.ProductLevel
    ,   MV.[KB / Description] AS [Most Recent KB / Description]
    ,   MV.Edition
    ,   MV.Version
    ,   MV.SimpleVersion
    ,   CAST(SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS sysname) AS Server
    ,   CAST(SERVERPROPERTY('InstanceName') AS sysname) AS Instance
    ,   CAST(SERVERPROPERTY('ServerName') AS sysname)  AS ServerName
    FROM
        MyVersion AS MV;
    GO
    

    Eu usaria uma consulta como

    SELECT
        MPL.CurrentVersion
    ,   MPL.MostRecentBuild
    ,   MPL.[Release Date]
    ,   MPL.MostRecentReleaseDate
    ,   MPL.DaysSincePatchAvailable
    ,   MPL.[Most Recent KB / Description]
    FROM
        dbo.MyPatchLevel AS MPL;
    

    Resultados

    CurrentVersion  MostRecentBuild  Release Date  MostRecentReleaseDate  DaysSincePatchAvailable  Most Recent KB / Description
    12.0.4416.0     12.0.4422.0      2015-06-22    2015-08-17             56                       3075950 Cumulative update package 2 (CU2) for SQL Server 2014 Service Pack 1
    

    Armado com esses resultados de consulta, eu sei se estou atualizado, quanto tempo se passou desde que fiz o patch e o que o KB deve ler no estado atual do patch.

    Os scripts também são hospedados no github

    • 26

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve