♥ 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
122 views