| ♥ 0 | Boas, Deixo aqui um código em sql que poderá ter interesse para alguém. É um bulk em sql para fazer queries às base de dados, neste caso para testar se em alguma base de dados há tabelas ( daquelas comuns) com registos diferentes. Num gabinete, e eu tenho o módulo de gestão de gabinetes, gosto de ter essas tabelas sincronizadas com a PRIZSCV10, e às vezes com a falta de tempo, cria-se qualquer coisa e não corro logo o operações em lote para sincronizar, e depois vai-se da memória. Rudimentar mas funciona, executo directamente no Managment Studio . Acrescento que agora também se conseguem algumas coisas interessantes em Power Query (excel ou power bi), no power query também se consegue aceder em lote às bases de dados. -- Executa um select às tabelas, recursivamente a todas as empresas
-- 16 Jan 2022
/* NOTAS
Query Options --> Advanced --> SET NOCOUNT
Result --> Text --> xScroll --> Separate tab
*/
----- Nome da tabela a comparar
DECLARE @NomeTabela as VARCHAR(50)
SET @NomeTabela = 'Tabela'
-- Inicializa variáveis
DECLARE @Counter INT;
SET @Counter = 1;
DECLARE @Totais INT;
SET @Totais = 0
DECLARE @SQL NVARCHAR(max);
DECLARE @Contagem NVARCHAR(max);
declare @cols varchar(max), @query varchar(max);
SELECT @cols = STUFF
(
(
SELECT DISTINCT '], [' + name
FROM sys.columns
where object_id = (
select top 1 object_id from sys.objects
where name = @NomeTabela
)
and name not in ('DataUltimaActualizacao', 'VersaoUltAct')
FOR XML PATH('')
), 1, 2, ''
) + ']';
-- Conta o nº de linhas
-- Lista das empresas a usar (5)
PRIZSCV10:
USE PRIZSCV10
GOTO LABEL1
EMP01:
USE PRI101
GOTO LABEL1
EMP02:
USE PRI102
GOTO LABEL1
EMP03:
USE PRI104
GOTO LABEL1
EMP04:
USE PRI105
GOTO LABEL1
-- Tabelas a seleccionar
LABEL1:
SET @SQL = N'
SELECT '+@cols+' FROM PRIZSCV10..'+ @NomeTabela +
' EXCEPT
SELECT '+@cols+' FROM '+ @NomeTabela
EXEC(@SQL)
IF @COUNTER = 1
BEGIN
PRINT 'Total de linhas:'
SET @CONTAGEM = N'SELECT * FROM PRIZSCV10..'+ @NomeTabela
EXEC (@cONTAGEM)
PRINT @@ROWCOUNT
END
SET @Totais = @@ROWCOUNT + @Totais
-- Código
-- Código a escutar em loop
WHILE @Counter <= 6
BEGIN
SET @Counter = @Counter + 1;
SELECT db_name() AS 'Código da Empresa'
IF @Counter = 1
GOTO PRIZSCV10
IF @Counter = 2
GOTO EMP01
IF @Counter = 3
GOTO EMP02
IF @Counter = 4
GOTO EMP03
IF @Counter = 5
GOTO EMP04
END;
PRINT 'TOTAL de registos diferentes -------------------------------------------------------'
PRINT @Totais
Marked as spam |
Comments Obrigado @sandrasantos |
Bulk em sql para v10
176 views