Armazenar hosts do mRemoteNG no Microsoft SQL Server

Esse artigo demonstra como configurar o mRemoteNG para armzenar os dados de servidores num banco de dados Microsoft SQL Server, ao invés de usar um arquivo xml padrão. Para isso é necessário instalar os seguintes seoftwares:

  • mRemoteNG. LINK
  • Microsoft SQL Server (qualquer versão. No meu caso estou usando o MS SQL Server 2017 Express Edition) LINK
  • Instale também o Management Studio. LINK

Primeiramente instale o MS SQL Server e o Management Studio. Se você já tem um servidor remoto com MS SQL Server, pode pular essa parte.

No seu servidor onde o SQL Server está instalado, abra o Management Studio e crie um novo banco de dados denominado mRemoteNG.

Navegue em Security, clique com o botão direito em Logins e selecione new login.

  • Na guia “General”:
    • Em login name insira mRemoteNG
    • Selecione SQL Server authentication e insira um password para o usuário.
    • Em ‘default database’ selecione mRemoteNG.
  • Na guia “User Mapping”:
    • No painel “Users mapped to this login“, selecione e habilite o usuário “mRemoteNG”
    • Então, no painel inferior “Database role membership for: mRemoteNG“, selecione a opção “db_owner“.
    • Clique em “Ok“.

Se estiver usando o “SQL Server Express” com “SQL Server Authentication” é necessário também habilitar autenticação mista do SQL.

Para isso clique com o botão direito na instância e selecione “Propriedades”. Em seguida selecione “Security” e então “SQL Server and Windows Authentication Mode”.

Execute o seguinte código para configurar as tabelas necessárias na database:

if exists (select * from dbo.sysobjects
        where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblCons]
GO

if exists (select * from dbo.sysobjects
        where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblRoot]
GO

if exists (select * from dbo.sysobjects
        where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblUpdate]
GO

CREATE TABLE [dbo].[tblCons] (
           [ID] int NOT NULL IDENTITY(1,1),
           [ConstantID] varchar(128) NOT NULL PRIMARY KEY,
           [PositionID] int NOT NULL,
           [ParentID] varchar(128),
           [LastChange] datetime NOT NULL,
           [Name] varchar(128) NOT NULL,
           [Type] varchar(32) NOT NULL,
           [Expanded] bit NOT NULL,
           [AutomaticResize] bit DEFAULT ((1)) NOT NULL,
           [CacheBitmaps] bit NOT NULL,
           [Colors] varchar(32) NOT NULL,
           [ConnectToConsole] bit NOT NULL,
           [Connected] bit NOT NULL,
           [Description] varchar(1024),
           [DisableCursorBlinking] bit NOT NULL,
           [DisableCursorShadow] bit NOT NULL,
           [DisableFullWindowDrag] bit NOT NULL,
           [DisableMenuAnimations] bit NOT NULL,
           [DisplayThemes] bit NOT NULL,
           [DisplayWallpaper] bit NOT NULL,
           [Domain] varchar(512),
           [EnableDesktopComposition] bit NOT NULL,
           [EnableFontSmoothing] bit NOT NULL,
           [ExtApp] varchar(256),
           [Favorite] tinyint NOT NULL,
           [Hostname] varchar(512),
           [ICAEncryptionStrength] varchar(32) NOT NULL,
           [Icon] varchar(128) NOT NULL,
           [LoadBalanceInfo] varchar(1024),
           [MacAddress] varchar(32),
           [Panel] varchar(128) NOT NULL,
           [Password] varchar(1024),
           [Port] int NOT NULL,
           [PostExtApp] varchar(256),
           [PreExtApp] varchar(256),
           [Protocol] varchar(32) NOT NULL,
           [PuttySession] varchar(128),
           [RDGatewayDomain] varchar(512),
           [RDGatewayHostname] varchar(512),
           [RDGatewayPassword] varchar(1024),
           [RDGatewayUsageMethod] varchar(32) NOT NULL,
           [RDGatewayUseConnectionCredentials] varchar(32) NOT NULL,
           [RDGatewayUsername] varchar(512),
           [RDPAlertIdleTimeout] bit NOT NULL,
           [RDPAuthenticationLevel] varchar(32) NOT NULL,
           [RDPMinutesToIdleTimeout] int NOT NULL,
           [RdpVersion] varchar(10),
           [RedirectAudioCapture] bit NOT NULL,
           [RedirectClipboard] bit DEFAULT ((0)) NOT NULL,
           [RedirectDiskDrives] bit NOT NULL,
           [RedirectKeys] bit NOT NULL,
           [RedirectPorts] bit NOT NULL,
           [RedirectPrinters] bit NOT NULL,
           [RedirectSmartCards] bit NOT NULL,
           [RedirectSound] varchar(64) NOT NULL,
           [RenderingEngine] varchar(10),
           [Resolution] varchar(32) NOT NULL,
           [SSHOptions] varchar(1024) NOT NULL,
           [SSHTunnelConnectionName] varchar(128) NOT NULL,
           [SoundQuality] varchar(20) NOT NULL,
           [UseCredSsp] bit NOT NULL,
           [UseEnhancedMode] bit DEFAULT ((0)),
           [UseVmId] bit,
           [UserField] varchar(256),
           [Username] varchar(512),
           [VNCAuthMode] varchar(10),
           [VNCColors] varchar(10),
           [VNCCompression] varchar(10),
           [VNCEncoding] varchar(20),
           [VNCProxyIP] varchar(128),
           [VNCProxyPassword] varchar(1024),
           [VNCProxyPort] int,
           [VNCProxyType] varchar(20),
           [VNCProxyUsername] varchar(512),
           [VNCSmartSizeMode] varchar(20),
           [VNCViewOnly] bit NOT NULL,
           [VmId] varchar(100),
           [InheritAutomaticResize] bit DEFAULT ((0)) NOT NULL,
           [InheritCacheBitmaps] bit NOT NULL,
           [InheritColors] bit NOT NULL,
           [InheritDescription] bit NOT NULL,
           [InheritDisableCursorBlinking] bit NOT NULL,
           [InheritDisableCursorShadow] bit NOT NULL,
           [InheritDisableFullWindowDrag] bit NOT NULL,
           [InheritDisableMenuAnimations] bit NOT NULL,
           [InheritDisplayThemes] bit NOT NULL,
           [InheritDisplayWallpaper] bit NOT NULL,
           [InheritDomain] bit NOT NULL,
           [InheritEnableDesktopComposition] bit NOT NULL,
           [InheritEnableFontSmoothing] bit NOT NULL,
           [InheritExtApp] bit NOT NULL,
           [InheritFavorite] bit NOT NULL,
           [InheritICAEncryptionStrength] bit NOT NULL,
           [InheritIcon] bit NOT NULL,
           [InheritLoadBalanceInfo] bit DEFAULT ((0)) NOT NULL,
           [InheritMacAddress] bit NOT NULL,
           [InheritPanel] bit NOT NULL,
           [InheritPassword] bit NOT NULL,
           [InheritPort] bit NOT NULL,
           [InheritPostExtApp] bit NOT NULL,
           [InheritPreExtApp] bit NOT NULL,
           [InheritProtocol] bit NOT NULL,
           [InheritPuttySession] bit NOT NULL,
           [InheritRDGatewayDomain] bit NOT NULL,
           [InheritRDGatewayHostname] bit NOT NULL,
           [InheritRDGatewayPassword] bit NOT NULL,
           [InheritRDGatewayUsageMethod] bit NOT NULL,
           [InheritRDGatewayUseConnectionCredentials] bit NOT NULL,
           [InheritRDGatewayUsername] bit NOT NULL,
           [InheritRDPAlertIdleTimeout] bit NOT NULL,
           [InheritRDPAuthenticationLevel] bit NOT NULL,
           [InheritRDPMinutesToIdleTimeout] bit NOT NULL,
           [InheritRdpVersion] bit DEFAULT ((0)) NOT NULL,
           [InheritRedirectAudioCapture] bit NOT NULL,
           [InheritRedirectClipboard] bit DEFAULT ((0)) NOT NULL,
           [InheritRedirectDiskDrives] bit NOT NULL,
           [InheritRedirectKeys] bit NOT NULL,
           [InheritRedirectPorts] bit NOT NULL,
           [InheritRedirectPrinters] bit NOT NULL,
           [InheritRedirectSmartCards] bit NOT NULL,
           [InheritRedirectSound] bit NOT NULL,
           [InheritRenderingEngine] bit NOT NULL,
           [InheritResolution] bit NOT NULL,
           [InheritSSHOptions] bit NOT NULL,
           [InheritSSHTunnelConnectionName] bit NOT NULL,
           [InheritSoundQuality] bit NOT NULL,
           [InheritUseConsoleSession] bit NOT NULL,
           [InheritUseCredSsp] bit NOT NULL,
           [InheritUseEnhancedMode] bit DEFAULT ((0)),
           [InheritUseVmId] bit,
           [InheritUserField] bit NOT NULL,
           [InheritUsername] bit NOT NULL,
           [InheritVNCAuthMode] bit NOT NULL,
           [InheritVNCColors] bit NOT NULL,
           [InheritVNCCompression] bit NOT NULL,
           [InheritVNCEncoding] bit NOT NULL,
           [InheritVNCProxyIP] bit NOT NULL,
           [InheritVNCProxyPassword] bit NOT NULL,
           [InheritVNCProxyPort] bit NOT NULL,
           [InheritVNCProxyType] bit NOT NULL,
           [InheritVNCProxyUsername] bit NOT NULL,
           [InheritVNCSmartSizeMode] bit NOT NULL,
           [InheritVNCViewOnly] bit NOT NULL,
           [InheritVmId] bit
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tblRoot] (
           [Name] [varchar] (2048) NOT NULL ,
           [Export] [bit] NOT NULL ,
           [Protected] [varchar] (4048) NOT NULL ,
           [ConfVersion] [float] NOT NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[tblUpdate] (
           [LastUpdate] [datetime] NULL
) ON [PRIMARY]
GO

No mRemoteNG vá em Tools > Options.

Na tela “mRemoteNG Options” selecione “SQL Server” e habilite “Use SQL Server to load & save connections”.

Em hostname informe o hostname do servidor e o nome da instância (e.g.: MyComputer\SQLEXPRESS).

No meu caso tanto o SQL Server quanto o mRemoteNG estão instalados no mesmo computador, por isso estou usando um ponto ao invés do nome do computador.

Informe o nome da database e as credenciais de acesso que acabou de configurar e clique em “Test connection”

Administrando Windows Internal Databases (WID)

Recentemente tive que manipular um tipo de Base de Dados “especial” chamado Windows Internal Database (WID).

O WID é uma instância particular de base dados da Microsoft para seus produtos e, por padrão, não está acessível através dos meios comuns.

Para manipular este tipo de Database você precisará instalar o Microsoft SQL Server Management Studio Express no servidor.

Depois de instalá-lo, para acessar a instância do WID utilize a seguinte String no campo Server Name:

\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query

SSMEE

Depois disso é possível editar os bancos de dados e realizar Shrink, Defrag e mover arquivos físicos para outros discos, por exemplo.

Créditos para Edwin Sarmiento