', 'LinkedServer_Fixed_User>')
WHERE
Id_Verificacao = 506
END
---------------------------------------------------------------------------------------------------------------
-- Verifica se o SQL Server está sendo executado na porta padrão 1433
---------------------------------------------------------------------------------------------------------------
SET @Resultado = NULL
IF (@PortaUtilizada = 1433)
BEGIN
SET @Resultado = (
SELECT @PortaUtilizada AS Porta_Utilizada
FOR XML PATH, ROOT('Porta_Utilizada')
)
END
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 600
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Porta_Utilizada>', 'Used_Port>')
WHERE
Id_Verificacao = 600
END
---------------------------------------------------------------------------------------------------------------
-- Verifica se o SQL Browser está sendo executado sem necessidade (apenas 1 instância)
---------------------------------------------------------------------------------------------------------------
IF (@IsAmazonRDS = 0)
BEGIN
SET @Resultado = NULL
IF ((SELECT COUNT(*) FROM @GetInstances) <= 1)
BEGIN
DECLARE @SQL_Browser_Instalado TABLE ( Valor INT )
INSERT INTO @SQL_Browser_Instalado (Valor)
EXEC master.sys.xp_regread 'HKEY_LOCAL_MACHINE', 'System\CurrentControlSet\Services\SQLBrowser'
IF ((SELECT TOP(1) Valor FROM @SQL_Browser_Instalado) = 1)
BEGIN
DECLARE @SQL_Browser_Ativo TABLE ( Resultado VARCHAR(100) )
INSERT INTO @SQL_Browser_Ativo ( Resultado )
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',N'sqlbrowser'
IF ((SELECT TOP(1) Resultado FROM @SQL_Browser_Ativo) LIKE '%Running%')
BEGIN
SET @Resultado = (
SELECT *
FROM @GetInstances
FOR XML PATH, ROOT('SQL_Browser_Rodando_Apenas_1_Instancia')
)
END
END
END
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 601
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'SQL_Browser_Rodando_Apenas_1_Instancia>', 'SQL_Browser_1_Instance>')
WHERE
Id_Verificacao = 601
END
END
---------------------------------------------------------------------------------------------------------------
-- Verifica se a configuração "Hide Instance" está ativada
---------------------------------------------------------------------------------------------------------------
IF (@IsAmazonRDS = 0)
BEGIN
DECLARE @HideInstance INT
EXEC master..xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib',
@value_name = N'HideInstance',
@value = @HideInstance OUTPUT
SET @Resultado = NULL
IF (@HideInstance = 0)
BEGIN
SET @Resultado = (
SELECT @HideInstance AS [HideInstance]
FOR XML PATH, ROOT('Instalacao_HideInstance')
)
END
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 602
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_HideInstance>', 'Installation_HideInstance>')
WHERE
Id_Verificacao = 602
END
END
---------------------------------------------------------------------------------------------------------------
-- Verifica as contas que o SQL Server está utilizando para iniciar os serviços
---------------------------------------------------------------------------------------------------------------
IF (@IsAmazonRDS = 0)
BEGIN
DECLARE
@DBEngineLogin VARCHAR(100),
@AgentLogin VARCHAR(100)
EXECUTE master.dbo.xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'SYSTEM\CurrentControlSet\Services\MSSQLServer',
@value_name = N'ObjectName',
@value = @DBEngineLogin OUTPUT
EXECUTE master.dbo.xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'SYSTEM\CurrentControlSet\Services\SQLServerAgent',
@value_name = N'ObjectName',
@value = @AgentLogin OUTPUT
SET @Resultado = NULL
IF (@DBEngineLogin LIKE 'NT SERVICE\%' OR @AgentLogin LIKE 'NT SERVICE\%' OR @DBEngineLogin = 'LocalSystem' OR @AgentLogin = 'LocalSystem' OR @DBEngineLogin LIKE 'NT AUTHORITY\%' OR @AgentLogin LIKE 'NT AUTHORITY\%')
BEGIN
SET @Resultado = (
SELECT
@DBEngineLogin AS [DBEngineLogin],
@AgentLogin AS [AgentLogin]
FOR XML PATH, ROOT('Instalacao_Usuario_Servico')
)
END
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 603
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_Usuario_Servico>', 'Installation__Service_Account>')
WHERE
Id_Verificacao = 603
END
END
---------------------------------------------------------------------------------------------------------------
-- Verifica se o SQL Server está instalado em uma versão antiga do Windows Server ou se é versão "Pessoal" do Windows
---------------------------------------------------------------------------------------------------------------
IF (@IsAmazonRDS = 0)
BEGIN
DECLARE
@VersaoWindows_ProductName VARCHAR(200),
@VersaoWindows_CurrentVersion VARCHAR(200),
@VersaoWindows_CurrentBuild VARCHAR(200),
@VersaoWindows_Language VARCHAR(20)
EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion', @value_name = 'ProductName', @value = @VersaoWindows_ProductName OUT
EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion', @value_name = 'CurrentVersion', @value = @VersaoWindows_CurrentVersion OUT
EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion', @value_name = 'CurrentBuild', @value = @VersaoWindows_CurrentBuild OUT
EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SYSTEM\CurrentControlSet\Control\Nls\Language', @value_name = 'InstallLanguage', @value = @VersaoWindows_Language OUT
SET @Resultado = NULL
SET @Resultado = (
SELECT
@VersaoWindows_ProductName AS [Product_Name],
@VersaoWindows_CurrentBuild AS CurrentBuild,
@VersaoWindows_CurrentVersion AS CurrentVersion,
@VersaoWindows_Language AS [Language]
FOR XML PATH, ROOT('Instalacao_Versao_Windows')
)
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @VersaoWindows_ProductName LIKE '% Server %' AND (@VersaoWindows_ProductName LIKE '% Server 2016%' OR @VersaoWindows_ProductName LIKE '% Server 2019%') THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 604
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @VersaoWindows_ProductName LIKE '% Server %' AND (@VersaoWindows_ProductName LIKE '% Server 2016%' OR @VersaoWindows_ProductName LIKE '% Server 2019%') THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_Versao_Windows>', 'Installation_Windows_Version>')
WHERE
Id_Verificacao = 604
END
END
---------------------------------------------------------------------------------------------------------------
-- Verifica se a versão do SQL Server ainda é suportada pela Microsoft
---------------------------------------------------------------------------------------------------------------
DECLARE @Versoes_SQL_Server TABLE (
[ProductName] VARCHAR(50),
[ProductVersion] VARCHAR(100),
[ProductLevel] VARCHAR(100),
[Edition] VARCHAR(100),
[EditionID] BIGINT,
[EngineEdition] INT,
[EngineEditionDescription] VARCHAR(100),
[ProductBuild] INT,
[ProductBuildType] VARCHAR(20),
[ProductMajorVersion] INT,
[ProductMinorVersion] INT,
[ProductUpdateLevel] VARCHAR(100),
[ProductUpdateReference] VARCHAR(100),
[BuildClrVersion] VARCHAR(100),
[LicenseType] VARCHAR(100),
[ResourceVersion] VARCHAR(100)
)
INSERT INTO @Versoes_SQL_Server
SELECT
(CASE
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '8%' THEN 'SQL Server 2000'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '9%' THEN 'SQL Server 2005'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '10.0%' THEN 'SQL Server 2008'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '10.5%' THEN 'SQL Server 2008 R2'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '11%' THEN 'SQL Server 2012'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '12%' THEN 'SQL Server 2014'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '13%' THEN 'SQL Server 2016'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '14%' THEN 'SQL Server 2017'
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('ProductVersion')) LIKE '15%' THEN 'SQL Server 2019'
ELSE 'Desconhecido'
END) AS ProductName,
CONVERT(VARCHAR(100), SERVERPROPERTY('ProductVersion')) AS ProductVersion,
CONVERT(VARCHAR(20), SERVERPROPERTY('ProductLevel')) AS ProductLevel,
CONVERT(VARCHAR(100), SERVERPROPERTY('Edition')) AS Edition,
CONVERT(BIGINT, SERVERPROPERTY('EditionID')) AS EditionID,
CONVERT(INT, SERVERPROPERTY('EngineEdition')) AS EngineEdition,
(CASE CONVERT(INT, SERVERPROPERTY('EngineEdition'))
WHEN '1' THEN 'Personal ou Desktop Engine (Não disponível no SQL Server 2005 e em versões posteriores)'
WHEN '2' THEN 'Standard (Retornada para Standard, Web e Business Intelligence)'
WHEN '3' THEN 'Enterprise (Retornado para Evaluation, Developer e Enterprise)'
WHEN '4' THEN 'Express (Retornada para Express, Express with Tools e Express com Advanced Services)'
WHEN '5' THEN 'SQL Database'
WHEN '6' THEN 'SQL Data Warehouse'
WHEN '8' THEN 'Managed Instance'
END) AS EngineEditionDescription,
CONVERT(INT, SERVERPROPERTY('ProductBuild')) AS ProductBuild,
CONVERT(VARCHAR(20), SERVERPROPERTY('ProductBuildType')) AS ProductBuildType,
CONVERT(INT, SERVERPROPERTY('ProductMajorVersion')) AS ProductMajorVersion,
CONVERT(INT, SERVERPROPERTY('ProductMinorVersion')) AS ProductMinorVersion,
CONVERT(VARCHAR(100), SERVERPROPERTY('ProductUpdateLevel')) AS ProductUpdateLevel,
CONVERT(VARCHAR(100), SERVERPROPERTY('ProductUpdateReference')) AS ProductUpdateReference,
CONVERT(VARCHAR(100), SERVERPROPERTY('BuildClrVersion')) AS BuildClrVersion,
CONVERT(VARCHAR(100), SERVERPROPERTY('LicenseType')) AS LicenseType,
CONVERT(VARCHAR(100), SERVERPROPERTY('ResourceVersion')) AS ResourceVersion
SET @Resultado = NULL
SET @Resultado = (
SELECT *
FROM @Versoes_SQL_Server
FOR XML PATH, ROOT('Instalacao_Versao_Nao_Suportada')
)
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN CONVERT(INT, SERVERPROPERTY('ProductMajorVersion')) >= 11 THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 605
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN CONVERT(INT, SERVERPROPERTY('ProductMajorVersion')) >= 11 THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_Versao_Nao_Suportada>', 'Installation_Not_Supported_Version>')
WHERE
Id_Verificacao = 605
END
---------------------------------------------------------------------------------------------------------------
-- Verifica a última atualização do SQL Server
---------------------------------------------------------------------------------------------------------------
BEGIN TRY
IF (@IsAmazonRDS = 0)
BEGIN
DECLARE @Fl_Ole_Automation_Ativado BIT = (SELECT (CASE WHEN CAST([value] AS VARCHAR(MAX)) = '1' THEN 1 ELSE 0 END) FROM sys.configurations WHERE [name] = 'Ole Automation Procedures')
IF (@Fl_Ole_Automation_Ativado = 0)
BEGIN
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'Ole Automation Procedures', 1
RECONFIGURE WITH OVERRIDE
END
DECLARE
@obj INT,
@Url VARCHAR(8000),
@xml VARCHAR(MAX),
@resposta VARCHAR(MAX)
SET @Url = 'http://sqlserverbuilds.blogspot.com/'
EXEC sys.sp_OACreate 'MSXML2.ServerXMLHTTP', @obj OUT
EXEC sys.sp_OAMethod @obj, 'open', NULL, 'GET', @Url, false
EXEC sys.sp_OAMethod @obj, 'send'
DECLARE @xml_versao_sql TABLE (
Ds_Dados VARCHAR(MAX)
)
INSERT INTO @xml_versao_sql(Ds_Dados)
EXEC sys.sp_OAGetProperty @obj, 'responseText' --, @resposta OUT
EXEC sys.sp_OADestroy @obj
IF (@Fl_Ole_Automation_Ativado = 0)
BEGIN
EXEC sp_configure 'Ole Automation Procedures', 0
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
END
DECLARE
@Versao_SQL_Build VARCHAR(10)
SET @Versao_SQL_Build = (CASE LEFT(CONVERT(VARCHAR, SERVERPROPERTY('ProductVersion')), 2)
WHEN '8.' THEN '2000'
WHEN '9.' THEN '2005'
WHEN '10' THEN (
CASE
WHEN LEFT(CONVERT(VARCHAR, SERVERPROPERTY('ProductVersion')), 4) = '10.5' THEN '2008 R2'
WHEN LEFT(CONVERT(VARCHAR, SERVERPROPERTY('ProductVersion')), 4) = '10.0' THEN '2008'
END)
WHEN '11' THEN '2012'
WHEN '12' THEN '2014'
WHEN '13' THEN '2016'
WHEN '14' THEN '2017'
WHEN '15' THEN '2019'
ELSE '2019'
END)
SELECT TOP 1 @resposta = Ds_Dados FROM @xml_versao_sql
SET @xml = @resposta COLLATE SQL_Latin1_General_CP1251_CS_AS
DECLARE
@PosicaoInicialVersao INT,
@PosicaoFinalVersao INT,
@ExpressaoBuscar VARCHAR(100) = 'Microsoft SQL Server ' + @Versao_SQL_Build + ' Builds',
@RetornoTabela VARCHAR(MAX),
@dadosXML XML
SET @PosicaoInicialVersao = CHARINDEX(@ExpressaoBuscar, @xml) + LEN(@ExpressaoBuscar) + 6
SET @PosicaoFinalVersao = CHARINDEX('', @xml, @PosicaoInicialVersao)
SET @RetornoTabela = SUBSTRING(@xml, @PosicaoInicialVersao, @PosicaoFinalVersao - @PosicaoInicialVersao + 8)
-- Corrigindo classes sem aspas duplas ("")
SET @RetornoTabela = REPLACE(@RetornoTabela, ' border=1 cellpadding=4 cellspacing=0 bordercolor="#CCCCCC" style="border-collapse:collapse"', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' target=_blank rel=nofollow', ' target="_blank" rel="nofollow"')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=h', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=lsp', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=cu', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=sp', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=rtm', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' width=580', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' width=125', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=lcu', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=cve', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=lrtm', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' class=beta', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, '', '')
-- Corrigindo elementos não fechados corretamente
SET @RetornoTabela = REPLACE(@RetornoTabela, '
', ' | ')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' | ', '
')
SET @RetornoTabela = REPLACE(@RetornoTabela, 'Build | Build | Release Date |
', 'Release Date | ')
SET @RetornoTabela = REPLACE(@RetornoTabela, '', ' | ')
SET @RetornoTabela = REPLACE(@RetornoTabela, ' | ', '
')
SET @RetornoTabela = REPLACE(@RetornoTabela, '
', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, '', '')
SET @RetornoTabela = REPLACE(@RetornoTabela, '', '')
-- Removendo elementos de entidades HTML
SET @RetornoTabela = REPLACE(@RetornoTabela, ' ', ' ')
SET @RetornoTabela = REPLACE(@RetornoTabela, '&kbln', '&kbln')
SET @RetornoTabela = REPLACE(@RetornoTabela, '
', '
')
SET @dadosXML = CONVERT(XML, @RetornoTabela)
DECLARE @Atualizacoes_SQL_Server TABLE
(
[Ultimo_Build] VARCHAR(100),
[Ultimo_Build_SQLSERVR.EXE] VARCHAR(100),
[Versao_Arquivo] VARCHAR(100),
[Q] VARCHAR(100),
[KB] VARCHAR(100),
[Descricao_KB] VARCHAR(100),
[Lancamento_KB] VARCHAR(100),
[Download_Ultimo_Build] VARCHAR(100)
)
INSERT INTO @Atualizacoes_SQL_Server
SELECT
@dadosXML.value('(//table/tr/td[1])[1]','varchar(100)') AS Ultimo_Build,
@dadosXML.value('(//table/tr/td[2])[1]','varchar(100)') AS [Ultimo_Build_SQLSERVR.EXE],
@dadosXML.value('(//table/tr/td[3])[1]','varchar(100)') AS Versao_Arquivo,
@dadosXML.value('(//table/tr/td[4])[1]','varchar(100)') AS [Q],
@dadosXML.value('(//table/tr/td[5])[1]','varchar(100)') AS KB,
@dadosXML.value('(//table/tr/td[6]/a)[1]','varchar(100)') AS Descricao_KB,
@dadosXML.value('(//table/tr/td[7])[1]','varchar(100)') AS Lancamento_KB,
@dadosXML.value('(//table/tr/td[6]/a/@href)[1]','varchar(100)') AS Download_Ultimo_Build
DECLARE
@Url_Ultima_Versao_SQL VARCHAR(500) = (SELECT TOP(1) Download_Ultimo_Build FROM @Atualizacoes_SQL_Server),
@Ultimo_Build VARCHAR(100) = (SELECT TOP(1) Ultimo_Build FROM @Atualizacoes_SQL_Server)
SET @Resultado = NULL
SET @Resultado = (
SELECT *
FROM @Atualizacoes_SQL_Server
FOR XML PATH, ROOT('Instalacao_Atualizacoes_SQL')
)
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN CONVERT(VARCHAR(100), SERVERPROPERTY('ProductVersion')) >= @Ultimo_Build THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Referencia = @Url_Ultima_Versao_SQL,
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 606
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN CONVERT(VARCHAR(100), SERVERPROPERTY('ProductVersion')) >= @Ultimo_Build THEN 'OK' ELSE 'Possible issue found' END),
Ds_Referencia = @Url_Ultima_Versao_SQL,
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_Atualizacoes_SQL>', 'Installation_SQL_Updates>')
WHERE
Id_Verificacao = 606
END
END
END TRY
BEGIN CATCH
PRINT 'Error on Validation 606'
END CATCH
---------------------------------------------------------------------------------------------------------------
-- Verifica se existem bases de dados "públicas" na instância
---------------------------------------------------------------------------------------------------------------
SET @Resultado = NULL
SET @Resultado = (
SELECT
[name] AS 'Database/@name',
database_id AS 'Database/@database_id',
[compatibility_level] AS 'Database/@compatibility_level',
[state_desc] AS 'Database/@state_desc',
recovery_model_desc AS 'Database/@recovery_model_desc',
page_verify_option_desc AS 'Database/@page_verify_option_desc'
FROM
sys.databases
WHERE
[name] IN ('pub', 'Northwind', 'AdventureWorks', 'AdventureWorksLT', 'AdventureWorksDW', 'WideWorldImporters', 'WideWorldImportersDW')
FOR XML PATH(''), ROOT('Instalacao_Databases_Publicas'), TYPE
)
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 607
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_Databases_Publicas>', 'Installation_Public_Databases>')
WHERE
Id_Verificacao = 607
END
---------------------------------------------------------------------------------------------------------------
-- Verifica se existem bases de dados "públicas" na instância
---------------------------------------------------------------------------------------------------------------
SET @Resultado = NULL
SET @Resultado = (
SELECT DISTINCT
net_transport
FROM
sys.dm_exec_connections
WHERE
net_transport NOT IN ('Session', 'TCP', 'Shared Memory')
FOR XML PATH, ROOT('Instalacao_Protocolos_de_Rede')
)
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 608
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_Protocolos_de_Rede>', 'Installation_Network_Protocols>')
WHERE
Id_Verificacao = 608
END
---------------------------------------------------------------------------------------------------------------
-- Verifica se o Firewall do Windows está ativado
---------------------------------------------------------------------------------------------------------------
IF (@IsAmazonRDS = 0)
BEGIN
DECLARE @Windows_Firewall INT
EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile', @value_name = 'EnableFirewall', @value = @Windows_Firewall OUT
SET @Resultado = NULL
IF (@Windows_Firewall = 0)
BEGIN
SET @Resultado = (
SELECT
'SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile' AS [Chave],
@Windows_Firewall AS [EnableFirewall]
FOR XML PATH, ROOT('Instalacao_Windows_Firewall')
)
END
IF (@language = 'pt')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possível problema encontrado' END),
Ds_Detalhes = @Resultado
WHERE
Id_Verificacao = 609
END
ELSE IF (@language = 'en')
BEGIN
UPDATE #Resultado
SET
Ds_Resultado = (CASE WHEN @Resultado IS NULL THEN 'OK' ELSE 'Possible issue found' END),
Ds_Detalhes = REPLACE(CAST(@Resultado AS VARCHAR(MAX)), 'Instalacao_Windows_Firewall>', 'Installation_Windows_Firewall>')
WHERE
Id_Verificacao = 609
END
END
---------------------------------------------------------------------------------------------------------------
-- Mostra os resultados
---------------------------------------------------------------------------------------------------------------
IF (@language = 'en')
BEGIN
SELECT
Id_Verificacao AS [Code],
Ds_Categoria AS [Category],
Ds_Titulo AS [Title],
Ds_Resultado AS [Result],
Ds_Descricao AS [How this can be an Issue],
Ds_Verificacao AS [Technical explanation],
Ds_Sugestao AS [How to Fix],
Ds_Detalhes AS [Result Details],
CONVERT(XML, Ds_Referencia) AS [External Reference]
FROM
#Resultado
END
ELSE IF (@language = 'pt')
BEGIN
SELECT
Id_Verificacao AS [Código],
Ds_Categoria AS [Categoria],
Ds_Titulo AS [O que é verificado],
Ds_Resultado AS [Avaliação],
Ds_Descricao AS [Descrição do Problema],
Ds_Verificacao AS [Detalhamento da Verificação],
Ds_Sugestao AS [Sugestão de Correção],
Ds_Detalhes AS [Resultados da Validação],
CONVERT(XML, Ds_Referencia) AS [URL de Referência]
FROM
#Resultado
END
END
-- EXEC dbo.stpSecurity_Checklist @language = 'pt'
-- exec dbo.stpSecurity_Checklist @language = 'en'