SQLServer Page History


Instalação SQLServer no Linux (Ubuntu)

Para obter as instruções com o passo a passo para instalar o SQLServer no Linux, selecione aqui.

Para migrar o seu banco de dados para o Linux, selecione aqui.

Para instalar o Linux no Windows 10, selecione aqui.

Para instalar o SQLServer Management Studio, selecione aqui.

Para alterar o número da porta de acesso externo ao SQLServer, selecione aqui.

Atentar para a versão do Ubuntu server que deve ser instalado. É a AMD64 e tem que ser a versão Ubuntu 16.04. Para obter esta versão, selecione aqui. O nome da imagem iso é ubuntu-16.04.4-server-amd64.iso.

Para ver as perguntas e respostas frequentes sobre o SQLServer no Linux, selecion aqui.

Para obter os números de licenças, selecione aqui.

Para consultar as compatibilidades do banco de dados, selecione aqui.

Após instalado o banco de dados fica na pasta:

/var/opt/mssql/data

Restauração do banco de dados

Quando restaurar um backup do banco de dados para sobrescrever um banco de dados pré-existente, tomar muito cuidado na seleção do nome do arquivo físico do banco de dados, geralmente ele coloca um nome padrão que não é o nome real e isso pode vir a sobrescrever outro banco de dados pré-existente e você perder todos os dados.

Não consigo restaurar o backup do banco de dados

Quando você tentar restaurar o backup de um banco de dados e aparecer a mensagem de que não é possível pois o seu banco de dados está em uso, verifique se o GeoSan não está aberto ou alguma querie não finalizou a sua execução. Caso isto não ocorra rode o seguinte script SQL para habilitar a restauração.

USE master;
GO
ALTER DATABASE nome_do_seu_banco_de_dados
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE nome_do_seu_banco_de_dados
SET MULTI_USER;
GO

Atualização da estrutura das tabelas

Para você atualizar um banco de dados para uma versão mais atualizada do GeoSan, sempre consulte o link https://softwarepublico.gov.br/gitlab/gsan/geosan/tree/master/sql, aqui está o histórico das modificações nas tabelas e/ou vistas do banco de dados.

Conexão pela rede

Criar um arquivo com extensão UDL.

Experimente entrar o nome do servidor da seguinte forma, colocando o número da porta.

192.168.1.30\MSSQLSERVER,1433

Outra alternativa

O serviço TCP/IP habilitado e o SQL Server Browser em automático, veja no SQL Server Configuration Manager em SQL Server Services o número do processo do SQL Server, por exemplo 6524, e em uma janela de comando rode:

netstat -ano | find /i "6524"

Deve aparecer:

TCP  0.0.0.0:50629 ...
TCP 192.168.0.29:50629 ... 
TCP [::]:5029 ...

Assim a string de conexão será:

192.168.1.30\MSSQLSERVER,5029

Você pode mudar o número desta porta se desejar, mais informações, selecione aqui

Conexão pelo Eclipse

Coloque o código para estabelecer a conexão, recomenda-se formtemente que crie uma classe separada apenas para a conexão, e retorne-a com o 'return'

Connection conn = null;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
conn = DriverManager.getConnection("jdbc:postgresql://<ip>:<porta>/<nome do banco>","user","password");
return conn;

Mais informações, selecione aqui

Copia de uma vista para tabela

Quando vou fazer o backup do banco de produção para o banco de testes ou desenvolvimento os dados das vistas não são copiados, para solucionar isto, antes do backup rode a seguinte querie para cada uma das vistas existentes.

INSERT INTO NXGS_nome_da_tabela_B
SELECT * FROM NXGS_nome_da_vista;

Com isso todos os dados das vistas serão copiados para as respectivas tabelas.

Depois no seu ambiente de testes ou desenvolvimento, renomeie as vistas para um outro nome, por exemplo, NXGS_nome_da_vista_bak e no nome das tabelas mantenha o nome das vistas.

Apague a tabela NXGS_nome_da_tabela e renomeie a tabela NXGS_nome_da_tabela_B para NXGS_nome_da_tabela

Isto permitirá você rodar o GeoSan exatamente como roda no cliente.

Encontrar ligações no GeoSan sem chaveamento

Ao exportar para o formato shape pode acontecer de ocorrer um erro na exportação dos consumidores. Isto é devido a existirem consumidores sem chaveamento entre o banco geográfico e o banco comercial. Para descobrir quais as ligações sem chaveamento rode a seguinte querie:

select * from RAMAIS_AGUA_LIGACAO t1
where not exists(select null from NXGS_V_LIG_COMERCIAL t2 where t2.NRO_LIGACAO_SEM_DV = Convert(bigint,t1.NRO_LIGACAO) / 10)

Obter o número total de linhas em todas tabelas de um banco de dados

CREATE TABLE #counts
(
    table_name varchar(255),
    row_count int
)

EXEC sp_MSForEachTable @command1='INSERT #counts (table_name, row_count) SELECT ''?'', COUNT(*) FROM ?'
SELECT table_name, row_count FROM #counts ORDER BY table_name, row_count DESC
DROP TABLE #counts

Obter o número de tabelas em um banco de dados

USE YOURDBNAME
SELECT COUNT(*) from information_schema.tables 
WHERE table_type = 'base table'

Criação de um SELECT * com JOIN de outras tabelas

DROP VIEW [dbo].[NXV_RedesAgua]

CREATE VIEW [dbo].[NXV_RedesAgua]
AS SELECT W.*, M.*, L.*, S.*, U.*, T.*, Y.Description_, Y.Specification_, A.ManufacturerID, A.Address as addr, a.City as Cy, a.CompanyName as comp, a.ContactName as contact, a.ContactTitle as contatoTitle, a.Country as pais, a.Fax as fax2, a.HomePage as paginaWeb, a.Phone as telefone, a.PostalCode as cep, a.Region as regiao FROM WATERLINES W 
INNER JOIN X_MATERIAL M ON W.MATERIAL = M.MATERIALID 
INNER JOIN X_LOCATION L ON W.LOCATION = L.LOCATIONID 
INNER JOIN X_SIDESTREET S ON W.SIDESTREET = S.SIDESTREET_ID 
INNER JOIN X_SUPPLIERS U ON W.SUPPLIER = U.SUPPLIERID 
INNER JOIN X_STATE T ON W.STATE = T.STATEID 
INNER JOIN WATERLINESTYPES Y ON W.ID_TYPE = Y.ID_TYPE 
INNER JOIN X_MANUFACTURERS A ON W.MANUFACTURER = A.MANUFACTURERID

Note que nas colunas com nomes duplicados entre as tabelas selecionadas é necessário especificar um outro apelido.]

Para mais informações selecione aqui

Seleção do nome das colunas de uma tabela

select column_name+',' from information_schema.columns
where table_name='WATERLINES'
and column_name not in('ID')

Para maiores informações, selecione aqui

Insere resultado de um SELECT em uma nova tabela

select column_name+',' As Coluna into nome_da_nova_tabela from information_schema.columns
   where table_name='NXT_RedesAgua'
   and column_name not in('ID')

Servidores vinculados

Sempre ao adicionar um servidor vinculado do próprio SQLServer lembrar de colocar a permissão de aceso no servidor remoto.

Para disponibilizar a vista no seu banco de dados após vincular o servidor, crie a mesma com o CREATE VIEW. Mais informações selecione aqui

Somar todas as linhas de um banco de dados


Last edited by José Maria Villac Pinheiro