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