Mudanças entre as edições de "Scritps Úteis"

De GeoSales
Ir para navegação Ir para pesquisar
Linha 404: Linha 404:
 
where tr.xtype = 'tr'
 
where tr.xtype = 'tr'
 
and tr.name like 'TR_AUDIT%'
 
and tr.name like 'TR_AUDIT%'
 +
</pre>
 +
 +
*Remover empresas do import que não estão mais acessíveis na base
 +
<pre>
 +
use bd_ssm_adm
 +
 +
select  *
 +
--update es set id_realiza_importacao
 +
from EMPRESA_SISTEMA es
 +
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA
 +
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS
 +
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')
 
</pre>
 
</pre>

Edição das 14h38min de 26 de julho de 2017

  • Listar agendamentos de importações de todas as empresas num único script (Caso você queira adicionar mais empresas só seguir o modelo)
select 'bd_ssm_DCA', * from bd_ssm_DCA..CONFIGURACAO_GERA_REGISTRO_AUTO
union all
select 'bd_ssm_CAMIL', * from bd_ssm_CAMIL..CONFIGURACAO_GERA_REGISTRO_AUTO
union all
select 'bd_ssm_BEVILAQUA', * from bd_ssm_BEVILAQUA..CONFIGURACAO_GERA_REGISTRO_AUTO
union all
select 'bd_ssm_GUARAVES', * from bd_ssm_GUARAVES..CONFIGURACAO_GERA_REGISTRO_AUTO
union all
select 'bd_ssm_PAULUS', * from bd_ssm_PAULUS..CONFIGURACAO_GERA_REGISTRO_AUTO
  • Ver todas as bases que utilizam a geração de registro automático
sp_update_databases 
'
insert into ##tabela
select db_name(),* from CONFIGURACAO_GERA_REGISTRO_AUTO', 'org_venda_cliente'
</pre

*Update com select e join:
<pre>
UPDATE PEDIDO SET PEDIDO.NM_CLIENTE = (C.NM_CLIENTE)
from PEDIDO
inner join CLIENTE C on 
PEDIDO.CD_CLIENTE = C.CD_CLIENTE
WHERE PEDIDO.DT_EMISSAO >= '2016-10-01' AND PEDIDO.NM_CLIENTE IS NULL
  • Atualizar Nome da Tabela
EXEC sp_rename 'ITEM_PEDIDO_REMESSA_FUTURA', 'ITEM_PED_REMESSA_FUTURA';
  • Remover Foreign Keys
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
ALTER TABLE ITEM_PEDIDO_EXCLUIDO DROP CONSTRAINT FK_SAV_ITEM__PEDIDO_PEDIDO_DEL; 
  • Retornar consulta por banco de dados do tamanho usado no banco
select 'Use '+name+';' + 'Exec SP_SpaceUsed ;'  from sys.databases
where  name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' 
and name not like '%adm%'
  • Lista os Vendedores da Hierárquia do Supervisor passado no Parâmetro
SELECT cd_vendedor [Código], 
       nm_vendedor [Vendedor]
FROM   fn_obter_vendedores_supervisor(#codigoSupervisor#)
  • Lista os Supervisores Acima da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo
SELECT S.cd_supervisor [Código], 
       S.nm_supervisor [Supervisor] 
FROM   fn_obter_supervisor_supervisores(#codigoSupervisor#) FOSS 
       INNER JOIN SUPERVISOR S 
               ON FOSS.cd_supervisor = S.cd_supervisor
  • Lista os Supervisores Abaixo da Hierárquia do Supervisor passado no Parâmetro, incluindo ele mesmo
SELECT S.cd_supervisor [Código], 
       S.nm_supervisor [Supervisor] 
FROM   fn_obter_supervisores_supervisor(#codigoSupervisor#) FOSS 
       INNER JOIN SUPERVISOR S 
               ON FOSS.cd_supervisor = S.cd_supervisor
  • Verificar processos que estão travando o banco e ver a query do processo que está travado
    • Selecionar os 100 primeiros processos bloqueados no banco
select TOP 100 *
from sys.sysprocesses
where blocked <> 0
  • Selecionar todos os processos bloqueados no banco ordenados por spid
select spid, blocked, hostname=left(hostname,20), program_name=left(program_name,20),
       WaitTime_Seg = convert(int,(waittime/1000))  ,open_tran, status
From master.dbo.sysprocesses 
where blocked > 0
order by spid
  • Saber quais os processos estão bloqueado outros e não estão sendo bloqueados
select db_name(dbid), *
from sys.sysprocesses
where spid in (
     select blocked
      from sys.sysprocesses
     where blocked > 0)
      and blocked = 0
  • Detalhar um processo
EXEC sp_who2 252
  • Ver a query que está sendo executada por um processo (Parâmetro spid)
DBCC INPUTBUFFER(6001)
  • Então você precisa verificar quais processos estão rodando em um determinado banco de dados:
    • Lista todos os processos existentes em uma determinada base de dados
DECLARE @database VARCHAR(100) = 'bd_ssm_suabase' -- INSIRA AQUI O NOME DO BANCO DE DADOS  
DECLARE @processosTemp TABLE 
  ( 
     spid       SMALLINT, 
     ecid       SMALLINT, 
     status     NCHAR(30), 
     loginname  NCHAR(128), 
     hostname   NCHAR(128), 
     blk        CHAR(5), 
     dbname     NCHAR(128), 
     cmd        NCHAR(16), 
     request_id INT 
  ) 

INSERT INTO @processosTemp 
EXEC Sp_who 

SELECT * 
FROM   @processosTemp 
WHERE  dbname = @database 
ORDER  BY spid 
  • Aí você precisa remover essa base - faça esse procedimento apenas no ambiente de teste - mas existem processos bloqueando essa remoção. Então você deverá remover os mesmos processos referentes a consulta acima, para depois DROPAR a base.
declare @execSql varchar(1000), @databaseName varchar(100)  
set @databaseName = 'bd_ssm_suabase'  -- INSIRA O NOME DA BASE QUE QUER MATAR SEUS PROCESSOS EM ABERTO

set @execSql = ''   
select  @execSql = @execSql + 'kill ' + convert(char(10), spid) + CHAR(13)+CHAR(10)  
from    master.dbo.sysprocesses  
where   db_name(dbid) = @databaseName  
     and  
     DBID <> 0  
     and  
     spid <> @@spid  
order by spid
exec(@execSql)
  • Script para verificar se exste alguma configuração para algum serviço de envio de e-mail ativado
SELECT * FROM CONFIGURACAO 
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_EXPORTADO'

SELECT * FROM CONFIGURACAO 
WHERE DS_CHAVE = 'ENVIA_EMAIL_CLIENTE_PEDIDO_NAO_EFETIVADO'

SELECT * FROM CONFIGURACAO 
WHERE DS_CHAVE = 'ENVIA_EMAIL_FINANC_NOVO_CLIENTE'

SELECT * FROM CONFIGURACAO 
WHERE DS_CHAVE = 'ENVIA_EMAIL_SUPERVISOR_PEDIDO_PENDENTE'

SELECT * FROM CONFIGURACAO 
WHERE DS_CHAVE = 'CONDICAO_PAGAMENTO_ESPECIAL'

SELECT * FROM CONFIGURACAO 
WHERE DS_CHAVE = 'SP_ENVIA_EMAIL_CLIENTE_PEDIDO_CRIACAO'
  • Script para ver todas as foreign keys do banco
SELECT 
 KCU1.CONSTRAINT_NAME AS 'FK_Nome_Constraint'
 , KCU1.TABLE_NAME AS 'FK_Nome_Tabela'
 , KCU1.COLUMN_NAME AS 'FK_Nome_Coluna'
 , FK.is_disabled AS 'FK_Esta_Desativada'
 , KCU2.CONSTRAINT_NAME AS 'PK_Nome_Constraint_Referenciada'
 , KCU2.TABLE_NAME AS 'PK_Nome_Tabela_Referenciada'
 , KCU2.COLUMN_NAME AS 'PK_Nome_Coluna_Referenciada'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG 
 AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
 AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG 
 AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
 AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME
 AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME

--where KCU1.CONSTRAINT_NAME like '%FK_PEDIDO_EXCLUIDO__PEDIDO%'
Order by 
KCU1.TABLE_NAME
  • Script para Cadastro de Menu do Portal

-- SELECT * FROM MENU WHERE DS_MENU IN('Cadastro', 'Bonificação','Associada ao Pedido')
-- UPDATE MENU SET DS_URL = null WHERE CD_MENU = 130
-- SELECT * FROM MENU WHERE CD_MENU_PAI = 1

-- INCLUSÃO DE MENU -- 
DECLARE @dsMenu    VARCHAR(100), 
        @dsMenuPai VARCHAR(100), 
        @cdMenuPai INT 

SELECT @dsMenu = 'Parâmetros de Configuração', 
       @dsMenuPai = 'Cadastro'
 
SELECT	@dsMenu = LTRIM(RTRIM(@dsMenu)),
		@dsMenuPai = LTRIM(RTRIM(@dsMenuPai))

SET @cdMenuPai = (SELECT TOP 1 cd_menu 
                  FROM   menu 
                  WHERE  ds_menu = @dsMenuPai)

IF ( @cdMenuPai IS NOT NULL ) 
  BEGIN 
      IF NOT EXISTS (SELECT 1 
                     FROM   menu 
                     WHERE  ds_menu = @dsMenu 
                            AND cd_menu_pai = @cdMenuPai) 
        BEGIN 
            INSERT INTO menu 
                        (cd_menu, 
                         ds_menu, 
                         ds_url, 
                         ds_param, 
                         cd_menu_pai, 
                         id_ativo) 
            SELECT Max(Isnull(cd_menu, 0)) + 1, 
                   @dsMenu, 
                   @dsMenu, 
                   NULL, 
                   @cdMenuPai, 
                   'S' 
            FROM   menu 
            
            PRINT '-----------------  MENU CADASTRADO COM SUCESSO  -----------------'
			PRINT 'FOI CADASTRADO O SUBMENU "'+ @dsMenu + '" NO MENU "'+ @dsMenuPai + '"!'
        END 
        ELSE
        BEGIN
			PRINT '-----------------  FALHA AO CADASTRAR MENU  -----------------'
			PRINT 'JÁ EXISTE O SUBMENU "'+ @dsMenu + '" NO MENU "'+ @dsMenuPai + '"!'
        END
  END 

  • Conjunto de Selects para visualizar se há algum desconto sendo persistido na base do Mobile
select  * from desconto_produto;
select * from DESCONTO_ORG_PRODUTO;
select * from DESCONTO_MEGAZORD;
select * from DESCONTO_ICMS_DIF;
select * from DESCONTO_CLIENTE_FORNEC;
select * from DESCONTO_CLIENTE;
select * from DESCONTO_FORNECEDOR;
select * from DESCONTO_MEGAZORD_SEGMENTO;
select * from DESCONTO_UF;
select  * from desco_cliente_familia;
select * from DESCO_GRUP_CLIEN_FAMIL;
select * from desconto_cliente;
select  * from DESCO_VENDEDOR_FAMILIA;
select * from DESCO_GRUP_CLIEN_FAMIL;
select * from DESCO_GRUP_CLIENT_VEND;
select * from DESCO_GRUPO_CLIEN_PROD;
select * from DESCONTO_VEND_PRODUTO;
select * from DESCONTO_UF_PRODUTO;
select * from DESCONTO_UF_FAMILIA;

select * from DESCONTO_CLIENTE_PRODUT;
  • Select para contar os registros de uma tabela sem derrubar o banco
SELECT SUM (row_count)
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   
AND (index_id=0 or index_id=1);
  • Desabilitar as triggers de geração de registros
select 'alter table '+ OBJECT_NAME(parent_id)+ ' disable trigger '+name from sys.triggers
where name like 'log%'
order by 1, name
  • Habilitar as triggers de geração de registros
select 'alter table '+ OBJECT_NAME(parent_id)+ ' enable trigger '+name from sys.triggers
where name like 'log%'
order by 1, name
  • Consulta para ver os processos em execução no banco da camil
select DB_NAME(dbid),* from sys.sysprocesses
where program_name like '%ssmicro%'
and status like '%run%'

dbcc inputbuffer(61)
dbcc inputbuffer(65)
guarda essa consulta
  • Listar todas as bases ativas criando um use bd_ssm_nomeempresa
select 'Use '+name+';' from sys.databases
where  
	name like 'bd_ssm_%' 
	and state_desc = 'online' 
	and name not like '%prontaentrega%' 
	and name not like '%adm%' 
order by name asc;

  • Contar os registros da log_alteracao_usuario sem parar o banco de dados
SELECT SUM (row_count)
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID('log_alteracao_usuario')   
AND (index_id=0 or index_id=1);
  • Truncar tabela de log
TRUNCATE TABLE LOG_ALTERACAO_USUARIO;
  • Usando a sys.databases de forma inteligente para economizar trabalho
select 'use ' + name + '; select ' +name + ',* from CAMPO where cd_campo = 23;'
from sys.databases
where name like 'bd_ssm_%' and state_desc <> 'OFFLINE'
  • Listar todos os bancos de dados de empresa da softsite
select name from sys.databases
where name like 'bd_ssm_%';
  • Limpeza de cadastros do ADM
SELECT E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E 
INNER JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)
INNER JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE) 
SELECT E.CD_EMPRESA, E.NM_EMPRESA, EB.DS_DATABASE, * FROM EMPRESA E 
LEFT JOIN EMPRESA_BD EB ON (E.CD_EMPRESA = EB.CD_EMPRESA)
LEFT JOIN sys.sysdatabases SD ON (SD.name = EB.DS_DATABASE)
WHERE 
	SD.name IS NULL	
  • Tabelas que tem que ser analisadas
EMPRESA_SYNC_SISTEMA
EMPRESA_SYNC_BD
EMPRESA_SISTEMA
EMPRESA_BD
EMPRESA
  • Verificar quantidade de conexões abertas por base utilizadas pelo portal
select db_name(dbid), count(*)
from sys.sysprocesses
where 1=1
--and   db_name(dbid) = 'bd_ssm_criasim'
and program_name = 'jTDS'
group 
by db_name(dbid)
  • Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer
DECLARE @comandoSQL VARCHAR(8000)
SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000))
FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071)))
select @comandoSQL
  • Comando para gerar os drops das Triggers do claudus
select ' drop trigger ', tr.name  from sys.sysobjects tr
inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U'
where tr.xtype = 'tr'
and tr.name like 'TR_AUDIT%'
  • Remover empresas do import que não estão mais acessíveis na base
use bd_ssm_adm

select  * 
--update es set id_realiza_importacao
from EMPRESA_SISTEMA es
inner join empresa_bd bd on es.CD_EMPRESA = bd.CD_EMPRESA 
left  join sys.databases d on d.name = bd.DS_DATABASE collate Latin1_General_CI_AS
where (d.name is null or d.snapshot_isolation_state_desc = 'OFF')