Mudanças entre as edições de "Scritps Úteis"
Ir para navegação
Ir para pesquisar
(114 revisões intermediárias por 14 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
+ | :*Comando pra saber se uma porta está em uso no windows | ||
+ | <pre> | ||
+ | netstat -ano | find ":Required port number | ||
+ | netstat -ano | find "25" | ||
+ | </pre> | ||
+ | |||
+ | :*Cadastro de empresa | ||
+ | <pre> | ||
+ | use bd_ssm_adm; | ||
+ | |||
+ | exec sp_cadastra_empresa 'softsite2numobile', '25', 0, 3 | ||
+ | exec CADASTRAR_BASE 'softsite2numobile', 'ANDERSON GOMES', 100 | ||
+ | </pre> | ||
+ | |||
+ | :*Saber quais os processos estão bloqueado outros e não estão sendo bloqueados | ||
+ | <pre> | ||
+ | select db_name(dbid), * | ||
+ | from sys.sysprocesses | ||
+ | where spid in ( | ||
+ | select blocked | ||
+ | from sys.sysprocesses | ||
+ | where blocked > 0) | ||
+ | and blocked = 0 | ||
+ | </pre> | ||
+ | |||
+ | :* Detalhar um processo | ||
+ | <pre> | ||
+ | EXEC sp_who2 252 | ||
+ | |||
+ | DBCC inputbuffer(252) | ||
+ | </pre> | ||
+ | |||
+ | :* Detalhar qual processo está rodando a partir de uma execução inicial | ||
+ | <pre> | ||
+ | DECLARE @Handle varbinary(64); | ||
+ | SELECT @Handle = sql_handle FROM sys.dm_exec_requests WHERE session_id = 13933 and request_id = 0; | ||
+ | SELECT * FROM ::fn_get_sql(@Handle); | ||
+ | </pre> | ||
+ | |||
+ | :* Ver a query que está sendo executada por um processo (Parâmetro spid) | ||
+ | <pre> | ||
+ | DBCC INPUTBUFFER(6001) | ||
+ | </pre> | ||
+ | |||
*[[Scrips Tabelas Web Service NOVO|Scrips Tabelas Web Service NOVO]] | *[[Scrips Tabelas Web Service NOVO|Scrips Tabelas Web Service NOVO]] | ||
+ | |||
+ | :*Saber quais as bases estão vencidas que procedure vai apagar | ||
+ | <pre> | ||
+ | USE bd_ssm_adm; | ||
+ | |||
+ | SELECT s.name, ub.DATA_EXPIRACAO FROM sys.sysdatabases s | ||
+ | LEFT JOIN USUARIO_BASE ub ON s.name = ub.nm_base | ||
+ | WHERE | ||
+ | s.name LIKE 'bd_ssm_%' | ||
+ | AND s.name NOT LIKE 'bd_ssm_adm' | ||
+ | AND (ub.nm_base IS NULL OR ub.DATA_EXPIRACAO < GETDATE()) | ||
+ | ORDER BY crdate ASC | ||
+ | </pre> | ||
+ | |||
+ | :* Listar dados de todas as bases dinamicamente numa consulta só usando union all | ||
+ | <pre> | ||
+ | select 'SELECT ''' + name + ''' ,* from '+name+'..INTERFACEERPCONFIGURACAOPARAMETRO UNION ALL' from sys.databases | ||
+ | where | ||
+ | name like 'bd_ssm_%' | ||
+ | and state_desc = 'online' | ||
+ | and name not like '%prontaentrega%' | ||
+ | and name not like '%adm%' | ||
+ | and name not like '%login%' | ||
+ | and name not like '%cpf%' | ||
+ | and name not like '%expressa%' | ||
+ | and name not like '%makitahomolog%' | ||
+ | and name not like '%prodentho_2%' | ||
+ | order by name asc; | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | select 'SELECT ''' + name + ''' , COUNT(*) from '+name+'..CLIENTE_COORD_LOG WHERE CAST(DT_LOG AS DATE) >= ''2019-11-19'' AND CAST(DT_LOG AS DATE) <= ''2019-11-19'' UNION ALL' from sys.databases | ||
+ | where | ||
+ | name like 'bd_ssm_%' | ||
+ | and state_desc = 'online' | ||
+ | and name not like '%prontaentrega%' | ||
+ | and name not like '%adm%' | ||
+ | and name not like '%login%' | ||
+ | and name not like '%cpf%' | ||
+ | order by name asc; | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Pegar usuarios de uma empresa x | ||
+ | <pre> | ||
+ | select * from bd_ssm_login..usuario_empresa ue | ||
+ | inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%colchobel%' | ||
+ | </pre> | ||
+ | |||
+ | * Pegar os dados de login de um usuario no evo | ||
+ | <pre> | ||
+ | |||
+ | select u.login as LOGIN, u.SENHA AS SENHA, | ||
+ | CASE ue.PAPEL | ||
+ | WHEN -1 THEN 'NENHUM' | ||
+ | WHEN 0 THEN 'SUPORTE' | ||
+ | WHEN 1 THEN 'GESTOR' | ||
+ | WHEN 2 THEN 'VENDEDOR' | ||
+ | WHEN 3 THEN 'CLIENTE' | ||
+ | WHEN 4 THEN 'BACKOFFICE' | ||
+ | WHEN 5 THEN 'INTEGRADOR' | ||
+ | END AS PAPEL, | ||
+ | dv.CD_VENDEDOR AS CD_VENDEDOR, | ||
+ | s.CD_SUPERVISOR AS CD_SUPERVISOR | ||
+ | FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO | ||
+ | left join tusuario tu on tu.CD_USUARIO = ue.CD_TUSUARIO | ||
+ | left join dados_vendedor dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO | ||
+ | left join supervisor s on s.CD_USUARIO = tu.CD_USUARIO | ||
+ | WHERE nm_empresa = 'biodinamicanumobile' | ||
+ | |||
+ | GO | ||
+ | select u.*, ue.* FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO | ||
+ | WHERE nm_empresa = 'biodinamicanumobile' | ||
+ | GO | ||
+ | </pre> | ||
+ | |||
+ | :* Checar qual versão determinado vendedor tá usando | ||
+ | <pre> | ||
+ | select cd_usuario, | ||
+ | substring(ds_log, CHARINDEX('@', ds_log) + 1, charindex(':', ds_log, CHARINDEX('@', ds_log) + 1) - CHARINDEX('@', ds_log) - 1) | ||
+ | from LOG_SINCRONISMO with(nolock) | ||
+ | order by 2 | ||
+ | </pre> | ||
+ | |||
+ | *Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer | ||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | *Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer quando existem mais de um script sendo executado | ||
+ | em background para o spid passado | ||
+ | <pre> | ||
+ | DECLARE @comandoSQL VARCHAR(8000) | ||
+ | DECLARE @tableComandoSQL TABLE (comando VARCHAR(8000)) | ||
+ | --SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000)) | ||
+ | --FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071))) | ||
+ | --select @comandoSQL | ||
+ | INSERT INTO @tableComandoSQL SELECT CAST([TEXT] AS VARCHAR(8000)) | ||
+ | FROM ::fn_get_sql((SELECT top 1 [sql_handle] FROM sys.sysprocesses where spid = 1071)) | ||
+ | SELECT * FROM @tableComandoSQL | ||
+ | </pre> | ||
+ | |||
+ | *Ver o tamanho das tabelas | ||
+ | <pre> | ||
+ | SELECT | ||
+ | OBJECT_NAME(object_id) As Tabela, Rows As Linhas, | ||
+ | SUM(Total_Pages * 8) As Reservado, | ||
+ | SUM(CASE WHEN Index_ID > 1 THEN 0 ELSE Data_Pages * 8 END) As Dados, | ||
+ | SUM(Used_Pages * 8) - | ||
+ | SUM(CASE WHEN Index_ID > 1 THEN 0 ELSE Data_Pages * 8 END) As Indice, | ||
+ | SUM((Total_Pages - Used_Pages) * 8) As NaoUtilizado | ||
+ | FROM | ||
+ | sys.partitions As P | ||
+ | INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id | ||
+ | GROUP BY OBJECT_NAME(object_id), Rows | ||
+ | ORDER BY DADOS DESC | ||
+ | </pre> | ||
*Listar agendamentos de importações de todas as empresas num único script (Caso você queira adicionar mais empresas só seguir o modelo) | *Listar agendamentos de importações de todas as empresas num único script (Caso você queira adicionar mais empresas só seguir o modelo) | ||
Linha 13: | Linha 176: | ||
select 'bd_ssm_PAULUS', * from bd_ssm_PAULUS..CONFIGURACAO_GERA_REGISTRO_AUTO | select 'bd_ssm_PAULUS', * from bd_ssm_PAULUS..CONFIGURACAO_GERA_REGISTRO_AUTO | ||
</pre> | </pre> | ||
+ | |||
+ | * Ver todas as bases que utilizam a geração de registro automático | ||
+ | <pre> | ||
+ | sp_update_databases | ||
+ | ' | ||
+ | insert into ##tabela | ||
+ | select db_name(),* from CONFIGURACAO_GERA_REGISTRO_AUTO', 'org_venda_cliente' | ||
+ | </pre | ||
*Update com select e join: | *Update com select e join: | ||
Linha 30: | Linha 201: | ||
*Remover Foreign Keys | *Remover Foreign Keys | ||
<pre> | <pre> | ||
+ | select * from sys.sysobjects where name = 'FK__LISTA_PRO__CD_SE__361203C5' | ||
+ | SELECT * FROM sys.sysobjects where ID = 907150277 | ||
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders | ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
ALTER TABLE ITEM_PEDIDO_EXCLUIDO DROP CONSTRAINT FK_SAV_ITEM__PEDIDO_PEDIDO_DEL; | ALTER TABLE ITEM_PEDIDO_EXCLUIDO DROP CONSTRAINT FK_SAV_ITEM__PEDIDO_PEDIDO_DEL; | ||
+ | </pre> | ||
+ | |||
+ | *Remover Foreign Keys Dinamicamente | ||
+ | <pre> | ||
+ | SELECT DISTINCT 'ALTER TABLE ' + KCU1.TABLE_NAME + ' DROP CONSTRAINT ' + KCU1.CONSTRAINT_NAME | ||
+ | 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 | ||
</pre> | </pre> | ||
Linha 82: | Linha 271: | ||
where blocked > 0 | where blocked > 0 | ||
order by spid | order by spid | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
Linha 117: | Linha 298: | ||
ORDER BY spid | ORDER BY spid | ||
</pre> | </pre> | ||
− | :* 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 | + | :* 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. |
<pre> | <pre> | ||
declare @execSql varchar(1000), @databaseName varchar(100) | declare @execSql varchar(1000), @databaseName varchar(100) | ||
− | set @databaseName = ' | + | set @databaseName = 'bd_ssm_suabase' -- INSIRA O NOME DA BASE QUE QUER MATAR SEUS PROCESSOS EM ABERTO |
set @execSql = '' | set @execSql = '' | ||
Linha 180: | Linha 361: | ||
Order by | Order by | ||
KCU1.TABLE_NAME | KCU1.TABLE_NAME | ||
+ | </pre> | ||
+ | |||
+ | *Script para Cadastro de Menu do Portal | ||
+ | <pre> | ||
+ | |||
+ | -- 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 | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | *Conjunto de Selects para visualizar se há algum desconto sendo persistido na base do Mobile | ||
+ | <pre> | ||
+ | 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; | ||
+ | </pre> | ||
+ | |||
+ | * Select para contar os registros de uma tabela sem derrubar o banco | ||
+ | <pre> | ||
+ | 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); | ||
+ | </pre> | ||
+ | |||
+ | * Desabilitar as triggers de geração de registros | ||
+ | <pre> | ||
+ | select 'alter table '+ OBJECT_NAME(parent_id)+ ' disable trigger '+name from sys.triggers | ||
+ | where name like 'log%' | ||
+ | order by 1, name | ||
+ | </pre> | ||
+ | |||
+ | * Habilitar as triggers de geração de registros | ||
+ | <pre> | ||
+ | select 'alter table '+ OBJECT_NAME(parent_id)+ ' enable trigger '+name from sys.triggers | ||
+ | where name like 'log%' | ||
+ | order by 1, name | ||
+ | </pre> | ||
+ | |||
+ | * Consulta para ver os processos em execução no banco da camil | ||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
+ | * Listar todas as bases ativas criando um use bd_ssm_nomeempresa | ||
+ | <pre> | ||
+ | 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; | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Contar os registros da log_alteracao_usuario sem parar o banco de dados | ||
+ | <pre> | ||
+ | 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); | ||
+ | </pre> | ||
+ | |||
+ | * Truncar tabela de log | ||
+ | <pre> | ||
+ | TRUNCATE TABLE LOG_ALTERACAO_USUARIO; | ||
+ | </pre> | ||
+ | |||
+ | * Usando a sys.databases de forma inteligente para economizar trabalho | ||
+ | <pre> | ||
+ | select 'use ' + name + '; select ' +name + ',* from CAMPO where cd_campo = 23;' | ||
+ | from sys.databases | ||
+ | where name like 'bd_ssm_%' and state_desc <> 'OFFLINE' | ||
+ | </pre> | ||
+ | |||
+ | * Listar todos os bancos de dados de empresa da softsite | ||
+ | <pre> | ||
+ | select name from sys.databases | ||
+ | where name like 'bd_ssm_%'; | ||
+ | </pre> | ||
+ | |||
+ | *Limpeza de cadastros do ADM | ||
+ | |||
+ | <pre> | ||
+ | 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) | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | 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 COLLATE SQL_Latin1_General_CP1_CI_AS) | ||
+ | INNER JOIN sys.databases SBD ON (SBD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) | ||
+ | WHERE | ||
+ | state_desc = 'OFFLINE' | ||
+ | </pre> | ||
+ | |||
+ | *Tabelas que tem que ser analisadas | ||
+ | |||
+ | <pre> | ||
+ | EMPRESA_SYNC_SISTEMA | ||
+ | EMPRESA_SYNC_BD | ||
+ | EMPRESA_SISTEMA | ||
+ | EMPRESA_BD | ||
+ | EMPRESA | ||
+ | </pre> | ||
+ | |||
+ | *Deletes necessários para limpar as bases | ||
+ | |||
+ | <pre> | ||
+ | Na base ADM: | ||
+ | select * from empresa order by nm_empresa asc | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | use bd_ssm_adm; | ||
+ | SELECT * FROM EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog' --619 | ||
+ | |||
+ | DELETE FROM EMPRESA_SYNC_BD WHERE CD_EMPRESA IN (619) | ||
+ | DELETE FROM EMPRESA_BD WHERE CD_EMPRESA IN (619) | ||
+ | DELETE FROM EMPRESA_SYNC_SISTEMA WHERE CD_EMPRESA IN (619) | ||
+ | DELETE FROM EMPRESA_SISTEMA WHERE CD_EMPRESA IN (619) | ||
+ | DELETE FROM EMPRESA WHERE CD_EMPRESA IN (619) | ||
+ | |||
+ | USE bd_ssm_login; | ||
+ | SELECT * FROM bd_ssm_login..USUARIO_EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog' | ||
+ | |||
+ | DELETE FROM MODULO_EMPRESA WHERE CD_EMPRESA IN (619) | ||
+ | DELETE FROM USUARIO WHERE CD_USUARIO IN (1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157) | ||
+ | DELETE FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'fiorehomolog' | ||
+ | </pre> | ||
+ | |||
+ | *Verificar quantidade de conexões abertas por base utilizadas pelo portal | ||
+ | <pre> | ||
+ | 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) | ||
+ | </pre> | ||
+ | |||
+ | *Comando para gerar os drops das Triggers do claudus | ||
+ | <pre> | ||
+ | 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%' | ||
+ | </pre> | ||
+ | <pre> | ||
+ | select ' disable trigger ' + tr.name + ' on ' + tb.name, st.is_disabled from sys.sysobjects tr | ||
+ | inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U' | ||
+ | inner join sys.triggers st on st.object_id = tr.id | ||
+ | where tr.xtype = 'tr' and st.is_disabled = 1 | ||
+ | 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> | ||
+ | |||
+ | *Listar algo em todas as bases numa consulta só | ||
+ | <pre> | ||
+ | select 'select ''' + name + ''', * from ' + name + '.dbo.INTERFACEERPCONFIGURACAOPARAMETRO where VR_PARAMETRO NOT LIKE ''%PEDIDO%ITEM_PEDIDO%'' UNION ALL' | ||
+ | from sys.databases | ||
+ | where name like 'bd_ssm_%' and state_desc <> 'OFFLINE' and (name not like '%pronta%' AND name not like 'bd_ssm_adm') | ||
+ | </pre> | ||
+ | |||
+ | *Descobrindo as empresas que importam | ||
+ | <pre> | ||
+ | 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> | ||
+ | |||
+ | |||
+ | *UPDATE para atualizar dados duplicados da tabela 001 | ||
+ | <pre> | ||
+ | UPDATE LISTA_PRODUTO_001 | ||
+ | SET data_delete = data_insert+('00:00:00.200') | ||
+ | where id in ( | ||
+ | -2146273629, | ||
+ | -2146273628, | ||
+ | -2146273627, | ||
+ | -2146273626, | ||
+ | -2146273625, | ||
+ | -2146273624, | ||
+ | -2146273623, | ||
+ | -2146273622, | ||
+ | -2146273621) | ||
+ | </pre> | ||
+ | |||
+ | *Comando para concatenar dentro do group by | ||
+ | <pre> | ||
+ | STUFF | ||
+ | |||
+ | SELECT NM_ESTADO, | ||
+ | NM_CIDADE, | ||
+ | STUFF( | ||
+ | (SELECT DISTINCT ',' + NM_FANTASIA | ||
+ | FROM cliente | ||
+ | WHERE NM_ESTADO = a.NM_ESTADO | ||
+ | AND NM_CIDADE = a.NM_CIDADE | ||
+ | FOR XML PATH ('')) , 1, 1, '') AS URLList | ||
+ | FROM cliente AS a | ||
+ | WHERE NM_ESTADO = 'CE' | ||
+ | AND NM_CIDADE = 'fortaleza' | ||
+ | GROUP BY NM_ESTADO, | ||
+ | NM_CIDADE | ||
+ | </pre> | ||
+ | |||
+ | *Template base pra criar o script de uma tabela NOVA pro TJ | ||
+ | <pre> | ||
+ | /* Criar a tabela TMP pra empresas que utilizam import */ | ||
+ | CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_TMP] | ||
+ | ( | ||
+ | CD_LOTE int NOT NULL, | ||
+ | CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, | ||
+ | CD_TAB_PRECO INT NOT NULL, | ||
+ | PR_DESCONTO DECIMAL(18, 6) NOT NULL, | ||
+ | CONSTRAINT [PK_DESCONTO_LOTE_OV_TP_TMP] PRIMARY KEY CLUSTERED ( | ||
+ | [CD_LOTE] ASC, | ||
+ | [CD_ORG_VENDA] ASC, | ||
+ | [CD_TAB_PRECO] ASC | ||
+ | ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
+ | ) ON [PRIMARY] | ||
+ | |||
+ | /* Criar a tabela de LOG */ | ||
+ | CREATE TABLE LOG_DESCONTO_LOTE_OV_TP | ||
+ | ( | ||
+ | CD_LOG INT IDENTITY PRIMARY KEY | ||
+ | ,DT_LOG DATETIME NOT NULL | ||
+ | ,TP_OPERACAO VARCHAR(1) NOT NULL | ||
+ | ,ID_KEY VARCHAR(200) NOT NULL | ||
+ | ,CD_LOTE int | ||
+ | ,CD_ORG_VENDA VARCHAR(20) | ||
+ | ,CD_TAB_PRECO INT) | ||
+ | |||
+ | /* Criar tabela 001 seguindo o padrão */ | ||
+ | CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_001] | ||
+ | ( | ||
+ | [id] [int] IDENTITY(-2147483648,1) NOT NULL, | ||
+ | CD_LOTE INT NOT NULL, | ||
+ | CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, | ||
+ | CD_TAB_PRECO INT NOT NULL, | ||
+ | PR_DESCONTO DECIMAL(18, 6) NOT NULL, | ||
+ | [data_insert] [datetime] NOT NULL, | ||
+ | [data_update] [datetime] NULL, | ||
+ | [data_delete] [datetime] NULL, | ||
+ | PRIMARY KEY NONCLUSTERED | ||
+ | ( | ||
+ | [id] ASC | ||
+ | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
+ | ) ON [PRIMARY] | ||
+ | |||
+ | /* Adicionar Index */ | ||
+ | CREATE CLUSTERED INDEX PK_DESCONTO_LOTE_OV_TP ON DESCONTO_LOTE_OV_TP_001 (CD_LOTE ASC, CD_ORG_VENDA ASC, CD_TAB_PRECO ASC) | ||
+ | |||
+ | /* Adicionar constraint */ | ||
+ | ALTER TABLE [dbo].[DESCONTO_LOTE_OV_TP_001] ADD CONSTRAINT [DF_DATA_INSERCAO_DESCONTO] DEFAULT (getdate()) FOR [data_insert] | ||
+ | |||
+ | /* Criar trigger na tabela nova adicionando os campos necessários */ | ||
+ | CREATE TRIGGER [dbo].[TR_TJ_UPDATE_DESCONTO_LOTE_OV_TP] | ||
+ | ON [dbo].[DESCONTO_LOTE_OV_TP_001] | ||
+ | instead OF UPDATE | ||
+ | AS | ||
+ | BEGIN | ||
+ | SET nocount ON; | ||
+ | |||
+ | UPDATE t | ||
+ | SET t.data_update = case when s.data_delete is null then Getdate() else t.data_update end , | ||
+ | T.CD_LOTE = S.CD_LOTE, | ||
+ | T.CD_ORG_VENDA = S.CD_ORG_VENDA, | ||
+ | T.CD_TAB_PRECO = S.CD_TAB_PRECO, | ||
+ | T.PR_DESCONTO = S.PR_DESCONTO, | ||
+ | t.data_delete = s.data_delete | ||
+ | FROM DESCONTO_LOTE_OV_TP_001 t | ||
+ | INNER JOIN inserted s | ||
+ | ON ( t.id = s.id ) | ||
+ | |||
+ | END | ||
+ | |||
+ | /* Criar a view TJ */ | ||
+ | CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP_TJ] | ||
+ | AS | ||
+ | SELECT id, | ||
+ | CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO | ||
+ | FROM DESCONTO_LOTE_OV_TP_001 | ||
+ | WHERE data_delete IS NULL | ||
+ | |||
+ | /* Criar Trigger da view */ | ||
+ | CREATE TRIGGER [dbo].[TR_TJ_DELETE_DESCONTO_LOTE_OV_TP] | ||
+ | ON [dbo].[DESCONTO_LOTE_OV_TP_TJ] | ||
+ | instead OF DELETE | ||
+ | AS | ||
+ | BEGIN | ||
+ | SET nocount ON; | ||
+ | |||
+ | UPDATE t | ||
+ | SET data_delete = Getdate() | ||
+ | FROM deleted s | ||
+ | INNER JOIN DESCONTO_LOTE_OV_TP_001 t | ||
+ | ON s.id = t.id | ||
+ | |||
+ | END | ||
+ | |||
+ | /* Criar a view */ | ||
+ | CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP] | ||
+ | AS | ||
+ | SELECT CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO | ||
+ | FROM DESCONTO_LOTE_OV_TP_tj | ||
+ | |||
+ | /* Criar a função de navegação */ | ||
+ | CREATE FUNCTION fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP(@ID_VENDEDOR INT, | ||
+ | @DT_LAST_SINC DATETIME) | ||
+ | RETURNS TABLE | ||
+ | AS | ||
+ | RETURN | ||
+ | (SELECT DLOT.id, | ||
+ | DLOT.CD_LOTE, | ||
+ | DLOT.CD_ORG_VENDA, | ||
+ | DLOT.CD_TAB_PRECO, | ||
+ | DLOT.PR_DESCONTO, | ||
+ | DLOT.DATA_DELETE | ||
+ | FROM DESCONTO_LOTE_OV_TP_001 DLOT | ||
+ | WHERE | ||
+ | ( | ||
+ | ( | ||
+ | ( | ||
+ | ( DLOT.DATA_INSERT >= @DT_LAST_SINC | ||
+ | OR DLOT.DATA_UPDATE >= @DT_LAST_SINC | ||
+ | ) | ||
+ | AND DLOT.DATA_DELETE IS NULL | ||
+ | ) | ||
+ | OR ( DLOT.DATA_DELETE >= @DT_LAST_SINC | ||
+ | AND DLOT.DATA_INSERT < @DT_LAST_SINC | ||
+ | AND NOT EXISTS(SELECT 1 | ||
+ | FROM DESCONTO_LOTE_OV_TP_001 T | ||
+ | WHERE DLOT.CD_LOTE = T.CD_LOTE | ||
+ | AND DLOT.CD_ORG_VENDA = T.CD_ORG_VENDA | ||
+ | AND DLOT.CD_TAB_PRECO = T.CD_TAB_PRECO | ||
+ | AND T.DATA_DELETE IS NULL | ||
+ | ) | ||
+ | ) | ||
+ | OR ( | ||
+ | @DT_LAST_SINC IS NULL | ||
+ | AND DLOT.DATA_DELETE IS NULL | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | /* Adicionando a função na tabela */ | ||
+ | INSERT INTO TAMOJUNTO_TABELA_FUNCAO (NM_TABLE, NM_FN, FL_ATIVA) VALUES ('DESCONTO_LOTE_OV_TP', 'fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP', 1) | ||
+ | </pre> | ||
+ | |||
+ | * Consulta para retornar os 20 processos que estão consumindo mais recursos de cpu no momento | ||
+ | <pre> | ||
+ | |||
+ | SELECT TOP 20 | ||
+ | GETDATE() AS 'Collection Date', | ||
+ | qs.execution_count AS 'Execution Count', | ||
+ | SUBSTRING(qt.text,qs.statement_start_offset/2 +1, | ||
+ | (CASE WHEN qs.statement_end_offset = -1 | ||
+ | THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 | ||
+ | ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 | ||
+ | ) AS 'Query Text', | ||
+ | DB_NAME(qt.dbid) AS 'DB Name', | ||
+ | qs.total_worker_time AS 'Total CPU Time', | ||
+ | qs.total_worker_time/qs.execution_count AS 'Avg CPU Time (ms)', | ||
+ | qs.total_physical_reads AS 'Total Physical Reads', | ||
+ | qs.total_physical_reads/qs.execution_count AS 'Avg Physical Reads', | ||
+ | qs.total_logical_reads AS 'Total Logical Reads', | ||
+ | qs.total_logical_reads/qs.execution_count AS 'Avg Logical Reads', | ||
+ | qs.total_logical_writes AS 'Total Logical Writes', | ||
+ | qs.total_logical_writes/qs.execution_count AS 'Avg Logical Writes', | ||
+ | qs.total_elapsed_time AS 'Total Duration', | ||
+ | qs.total_elapsed_time/qs.execution_count AS 'Avg Duration (ms)', | ||
+ | qp.query_plan AS 'Plan' | ||
+ | FROM sys.dm_exec_query_stats AS qs | ||
+ | CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt | ||
+ | CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp | ||
+ | WHERE | ||
+ | qs.execution_count > 50 OR | ||
+ | qs.total_worker_time/qs.execution_count > 100 OR | ||
+ | qs.total_physical_reads/qs.execution_count > 1000 OR | ||
+ | qs.total_logical_reads/qs.execution_count > 1000 OR | ||
+ | qs.total_logical_writes/qs.execution_count > 1000 OR | ||
+ | qs.total_elapsed_time/qs.execution_count > 1000 | ||
+ | ORDER BY | ||
+ | qs.execution_count DESC, | ||
+ | qs.total_elapsed_time/qs.execution_count DESC, | ||
+ | qs.total_worker_time/qs.execution_count DESC, | ||
+ | qs.total_physical_reads/qs.execution_count DESC, | ||
+ | qs.total_logical_reads/qs.execution_count DESC, | ||
+ | qs.total_logical_writes/qs.execution_count DESC | ||
+ | GO | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Consulta para ver se uma trigger está habilitada | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | select ObjectProperty(Object_id(Name),'ExecIsTriggerDisabled') STATUS from sys.sysobjects where name = 'LOG_ALTERACAO_DELETE_PRODUTO_ESTOQUE' | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Checar se um campo existe em uma tabela | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | SELECT T.name AS Tabela, C.name AS Coluna | ||
+ | FROM sys.sysobjects AS T (NOLOCK) | ||
+ | INNER JOIN sys.all_columns AS C (NOLOCK) ON T.id = C.object_id AND T.XTYPE = 'U' | ||
+ | WHERE C.NAME LIKE '%CAMPO%' | ||
+ | ORDER BY T.name ASC | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Alterar os paths de dados de importação da modelo para o nome da empresa cadastrada | ||
+ | <pre> | ||
+ | USE bd_ssm_jptripas | ||
+ | |||
+ | DECLARE @empresa varchar(50); | ||
+ | SET @empresa = 'jptripas'; | ||
+ | |||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO' | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao\backup' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO_BKP' | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE DS_CHAVE='DS_PATH_ARQS_IMPORTACAO' | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE DS_CHAVE='DS_PATH_DESCRIBER' | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE DS_CHAVE='DS_PATH_DIRS_VERSOES' | ||
+ | |||
+ | UPDATE CONFIGURACOES SET DS_PATH_ARQS_IMPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1 | ||
+ | UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE CD_CONFIGURACAO=1 | ||
+ | UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO_BKP= 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1 | ||
+ | UPDATE CONFIGURACOES SET DS_PATH_DESCRIBER = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE CD_CONFIGURACAO=1 | ||
+ | UPDATE CONFIGURACOES SET DS_PATH_DIRS_VERSOES = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE CD_CONFIGURACAO=1 | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | * Script para análise de que se existe a tabela no tamojunto para inserir | ||
+ | <pre> | ||
+ | select ' USE ' + name + '; IF(((SELECT COUNT(*) FROM tamojunto_tabela_funcao WHERE NM_TABLE = ''CLIENTE'') = 0) AND (EXISTS (SELECT TOP 1 1 FROM sys.objects WHERE NAME = ''CLIENTE_001''))) BEGIN INSERT INTO tamojunto_tabela_funcao VALUES (''CLIENTE'', ''fn_REGISTRO_SYNC_CLIENTE'', 1) END' from sys.databases | ||
+ | where | ||
+ | name like 'bd_ssm_%' | ||
+ | and state_desc = 'online' | ||
+ | and name not like '%prontaentrega%' | ||
+ | and name not like '%adm%' | ||
+ | and name not like '%protheus%' | ||
+ | and name not like '%login%' | ||
+ | order by name asc; | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | * Script para contar quantas licenças uma empresa tem. | ||
+ | <pre> | ||
+ | DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( | ||
+ | NM_EMPRESA VARCHAR(50), | ||
+ | NR_LICENCAS INT, | ||
+ | NR_LICENCAS_PORTAL INT, | ||
+ | NR_USUARIOS_SOMENTE_PORTAL INT, | ||
+ | NR_USUARIOS_SOMENTE_MOBILE INT, | ||
+ | NR_USUARIOS_PORTAL_MOBILE INT, | ||
+ | NR_USUARIOS_PORTAL_MOBILE_UNICO INT, | ||
+ | NR_USUARIOS_TOTAL INT) | ||
+ | |||
+ | DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), | ||
+ | @NrUsuariosSomentePortal INT, @NrUsuariosSomenteMobile INT, @NrUsuariosPortalMobile INT, @NrUsuariosPortalMobileUnico INT; | ||
+ | SELECT @NmEmpresa = 'makita', @NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'), @NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'), @NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL), @NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)), @NrUsuariosPortalMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO T INNER JOIN bd_ssm_makita..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL), @NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL AND ID_PALM IS NOT NULL); | ||
+ | INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobile, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobile + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal)); | ||
+ | SELECT * FROM @VisaoLicencasUsuariosPorEmpresa; | ||
+ | </pre> | ||
+ | |||
+ | * Código que deve ser executado quando se restaurar uma base de produção em homologação. | ||
+ | <pre> | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/supervisor/gerencial/getRelatorioGerencial/' WHERE DS_CHAVE = 'DS_URL_REL_GERENCIAL' | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/services/WebService' WHERE DS_CHAVE = 'DS_URL_SERVICE' | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'GPS_BASE_URL' | ||
+ | UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'URL_WEBSERVICE' | ||
+ | </pre> | ||
+ | |||
+ | * Shrink | ||
+ | |||
+ | <pre> | ||
+ | DBCC SHRINKDATABASE('bd_ssm_campneus', 0) | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | * Controle de licenças | ||
+ | <pre> | ||
+ | |||
+ | SELECT program_name, HOSTNAME, * | ||
+ | FROM sys.sysprocesses | ||
+ | where program_name = 'passwordsenderws' | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | INSERT INTO empresa_bd_properties | ||
+ | SELECT CD_EMPRESA, 'passwordsenderws', NULL, 2 FROM EMPRESA | ||
+ | </pre> | ||
+ | |||
+ | *Verificar processo de importação | ||
+ | <pre> | ||
+ | select db_name(dbid), * | ||
+ | from sys.sysprocesses | ||
+ | where program_name like '%Import%' | ||
+ | and db_name(dbid) = 'bd_ssm_boreda' | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | * Analisar base que está dando erro no claudus | ||
+ | <pre> | ||
+ | select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD WHERE ID_STATUS_DEL = ''F'' UNION ALL' from sys.databases | ||
+ | where | ||
+ | name like 'bd_ssm_%' | ||
+ | and state_desc = 'online' | ||
+ | and name not like '%prontaentrega%' | ||
+ | and name not like '%adm%' | ||
+ | and name not like '%login%' | ||
+ | order by name asc; | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | SELECT A.NAME, A.TYPE, B.TEXT | ||
+ | FROM SYSOBJECTS A (nolock) | ||
+ | JOIN SYSCOMMENTS B (nolock) | ||
+ | ON A.ID = B.ID | ||
+ | WHERE B.TEXT LIKE '%ITEM_PEDIDO%' --- Informação a ser procurada no corpo da procedure, funcao ou view | ||
+ | AND B.TEXT LIKE '%LOG_ALTERACAO_USUARIO%' | ||
+ | AND B.TEXT LIKE '%''D''%' | ||
+ | AND A.TYPE = 'TR' --- Tipo de objeto a ser localizado no caso procedure | ||
+ | ORDER BY A.NAME | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | * Pesquisar texto dentro das estruturas do banco | ||
+ | |||
+ | <pre> | ||
+ | DECLARE @Search varchar(255) | ||
+ | SET @Search='EXCLUINDO REGISTROS NÃO SINCRONIZADOS' | ||
+ | |||
+ | SELECT DISTINCT | ||
+ | o.name AS Object_Name,o.type_desc | ||
+ | FROM sys.sql_modules m | ||
+ | INNER JOIN sys.objects o ON m.object_id=o.object_id | ||
+ | WHERE m.definition Like '%'+@Search+'%' | ||
+ | ORDER BY 2,1 | ||
+ | </pre> | ||
+ | |||
+ | * Verificar falhas no claudus em todas as bases | ||
+ | |||
+ | <pre> | ||
+ | select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD WHERE ID_STATUS_DEL = ''F'' OR ID_STATUS_INS = ''F'' UNION ALL' from sys.databases | ||
+ | where | ||
+ | name like 'bd_ssm_%' | ||
+ | and state_desc = 'online' | ||
+ | and name not like '%prontaentrega%' | ||
+ | and name not like '%adm%' | ||
+ | and name not like '%login%' | ||
+ | order by name asc; | ||
+ | </pre> | ||
+ | |||
+ | * Analisar vínculos de frete | ||
+ | <pre> | ||
+ | select * from CLIENTE where nm_cliente like '%POLO DISTR%' | ||
+ | SELECT * FROM APLICACAO_FRETE; | ||
+ | SELECT CD_CLASSE_FRETE, * FROM PRODUTO WHERE CD_PRODUTO = 12951 | ||
+ | SELECT * FROM FAIXA_PRECO_FRETE WHERE CD_CLASSE_FRETE = 0 and CD_FRETE in (13527306, 23527306, 33527306) | ||
+ | |||
+ | select * from PRACA where CD_PRACA = 3527306 | ||
+ | select * from CLIENTE_PRACA where CD_CLIENTE = 100669301 --3527306 | ||
+ | select* from FRETE where CD_PRACA = 3527306 | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | UPDATE TAMOJUNTO_TABELA_FUNCAO SET FL_ATIVA = 1 | ||
+ | WHERE FL_ATIVA = 0 AND NM_TABLE NOT IN ('DESCO_GRUP_CLIEN_FAMIL', 'TIPO_PRODUTO_MOVIMENTO') | ||
+ | </pre> | ||
+ | |||
+ | * Aprovar pedidos manualmente. | ||
+ | <pre> | ||
+ | SELECT 'EXEC autorizar_item_pedido_super ' + CAST(IP.CD_PEDIDO_PALM AS VARCHAR(20)) + ', ' + | ||
+ | CAST(IP.NR_ITEM_PEDIDO AS VARCHAR(20)) + ', ' + CAST(IP.CD_PRODUTO AS VARCHAR(15)) + ', NULL, ''S'', 14 ' | ||
+ | FROM ITEM_PEDIDO IP WHERE CD_PEDIDO_PALM IN (190302065635151583) | ||
+ | |||
+ | SELECT 'EXEC autorizar_pedido_super ' + CAST(P.CD_PEDIDO_PALM AS VARCHAR(20)) + ', 14, 0 ' | ||
+ | FROM PEDIDO P WHERE CD_PEDIDO_PALM IN (190302065635151583) | ||
+ | </pre> | ||
+ | |||
+ | *Contagem de licenças | ||
+ | <pre> | ||
+ | |||
+ | DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( | ||
+ | NM_EMPRESA VARCHAR(50), | ||
+ | NR_LICENCAS INT, | ||
+ | NR_LICENCAS_PORTAL INT, | ||
+ | NR_USUARIOS_SOMENTE_PORTAL INT, | ||
+ | NR_USUARIOS_SOMENTE_PORTAL_BLOQUEADOS INT, | ||
+ | NR_USUARIOS_SOMENTE_MOBILE INT, | ||
+ | NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM INT, | ||
+ | NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM_BLOQUEADO INT, | ||
+ | NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM INT, | ||
+ | NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM_BLOQUEADO INT, | ||
+ | NR_USUARIOS_PORTAL_MOBILE_UNICO INT, | ||
+ | NR_USUARIOS_TOTAL INT, | ||
+ | NR_USUARIOS_DESATIVADOS INT, | ||
+ | NR_USUARIOS_BLOQUEADOS_TOTAL INT) | ||
+ | |||
+ | DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), | ||
+ | @NrUsuariosSomentePortal INT, @NrUsuariosSomentePortalBloqueado INT, @NrUsuariosSomenteMobile INT, | ||
+ | @NrUsuariosPortalMobileComIdPalm INT, @NrUsuariosPortalMobileComIdPalmBloqueado INT, | ||
+ | @NrUsuariosPortalMobileSemIdPalm INT, @NrUsuariosPortalMobileSemIdPalmBloqueado INT, @NrUsuariosPortalMobileUnico INT, | ||
+ | @NrUsuariosPortalDesativados INT, @NrUsuariosPortalBloqueados INT; | ||
+ | |||
+ | SELECT @NmEmpresa = 'camil', | ||
+ | @NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'), | ||
+ | @NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'), | ||
+ | @NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL), | ||
+ | @NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO <> 2 AND CD_SITUACAO <> 9 AND (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)), | ||
+ | @NrUsuariosSomentePortalBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO <> 2 AND CD_SITUACAO = 9 AND (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)), | ||
+ | @NrUsuariosPortalMobileComIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO <> 9), | ||
+ | @NrUsuariosPortalMobileComIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO = 9), | ||
+ | @NrUsuariosPortalMobileSemIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO <> 9 ), | ||
+ | @NrUsuariosPortalMobileSemIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO = 9), | ||
+ | @NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT DV.CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_camil..DADOS_VENDEDOR DV INNER JOIN TUSUARIO T ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE DV.ID_PALM IS NOT NULL AND T.CD_SITUACAO <> 2), | ||
+ | @NrUsuariosPortalDesativados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 2), | ||
+ | @NrUsuariosPortalBloqueados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 9); | ||
+ | INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomentePortalBloqueado, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobileComIdPalm, @NrUsuariosPortalMobileComIdPalmBloqueado, @NrUsuariosPortalMobileSemIdPalm, @NrUsuariosPortalMobileSemIdPalmBloqueado, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobileComIdPalm + @NrUsuariosPortalMobileComIdPalmBloqueado + @NrUsuariosPortalMobileSemIdPalm + @NrUsuariosPortalMobileSemIdPalmBloqueado + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal + @NrUsuariosSomentePortalBloqueado), @NrUsuariosPortalDesativados, @NrUsuariosPortalBloqueados); | ||
+ | |||
+ | SELECT * FROM @VisaoLicencasUsuariosPorEmpresa | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | |||
+ | SELECT 'INSERT INTO USUARIO_EMPRESA VALUES (' + | ||
+ | CAST( (1331 + ROW_NUMBER() OVER(ORDER BY CD_USUARIO ASC) ) as VARCHAR(20)) + ',' + | ||
+ | CAST(CD_TUSUARIO AS VARCHAR(10)) + ',''' + | ||
+ | 'estrellagaliciahomolog'', ' + | ||
+ | CAST(VALIDO AS VARCHAR(10)) + ',''' + | ||
+ | ISNULL(CAST(DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' + | ||
+ | ISNULL(CAST(DT_CRIACAO AS VARCHAR(100)), 'NULL') + ''',' + | ||
+ | CAST(PAPEL AS VARCHAR(10)) + ')' | ||
+ | FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'estrellagalicia' | ||
+ | |||
+ | |||
+ | SELECT 'INSERT INTO USUARIO VALUES ' + | ||
+ | '(''' + ISNULL(U.NOME, 'NULL') + ''',''' + | ||
+ | ISNULL(U.LOGIN, 'NULL') + '' + ''',''' + | ||
+ | ISNULL(U.EMAIL, 'NULL') + ''',''' + | ||
+ | ISNULL(U.SENHA, 'NULL') + ''',''' + | ||
+ | ISNULL(U.SALT, 'NULL') + ''',''' + | ||
+ | ISNULL(U.TELEFONE, 'NULL') + ''',''' + | ||
+ | ISNULL(CAST(U.NUMERO_VIOLACOES AS VARCHAR(100)), 'NULL') + ''',''' + | ||
+ | ISNULL(CAST(U.VALIDO AS VARCHAR(100)), 'NULL') + ''',''' + | ||
+ | ISNULL(CAST(U.DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' + | ||
+ | ISNULL(CAST(U.DT_CRIACAO AS VARCHAR(100)), 'NULL') + ''',''' + | ||
+ | ISNULL(U.URL_FOTO, 'NULL') + ''',''' + | ||
+ | ISNULL(CAST(U.DELTA_ITERACOES AS VARCHAR(100)), 'NULL') + ''')' | ||
+ | FROM USUARIO U | ||
+ | INNER JOIN USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO | ||
+ | WHERE NM_EMPRESA = 'estrellagalicia' | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Análise de processo de importação | ||
+ | <pre> | ||
+ | select * from dw_importacao order by 3 desc | ||
+ | |||
+ | select db_name(dbid), * | ||
+ | from sys.sysprocesses | ||
+ | where db_name(dbid) = 'bd_ssm_coopatos' | ||
+ | and program_name like '%Import%' | ||
+ | |||
+ | EXEC sp_who2 23230 | ||
+ | |||
+ | DBCC INPUTBUFFER(23230) | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | --Reindex das Estruturas do Banco | ||
+ | Print '' | ||
+ | Print 'Data e Hora início: ' + convert(varchar(20),GetDate(),25) | ||
+ | Print '*****************************************' | ||
+ | Print '' | ||
+ | Declare @Tabela Varchar(300) | ||
+ | Declare @indice Varchar(300) | ||
+ | Declare @select varchar (2000) | ||
+ | declare @banco varchar(50) | ||
+ | set @banco = 'bd_ssm_makitabeta' | ||
+ | Print 'INICIO REBUILD BANCO DE DADOS: ' + upper(@banco) | ||
+ | Create table #temp (cod int primary key identity, banco varchar (100), tabela varchar (300), indice varchar (300)) | ||
+ | |||
+ | insert into #temp (banco, tabela, indice) | ||
+ | exec ('select ' + '''' + @banco + '''' + ' as banco, o.name as tabela, i.name as indice from ' + @banco + '.sys.objects o | ||
+ | join ' + @banco + '.sys.indexes i on (o.OBJECT_id = i.OBJECT_id) | ||
+ | where o.type = ''u'' | ||
+ | and i.name is not null | ||
+ | order by 2') | ||
+ | --select * from #temp | ||
+ | Declare Reindex Cursor | ||
+ | For | ||
+ | select banco, tabela, indice from #temp | ||
+ | |||
+ | Open Reindex | ||
+ | Fetch Next From Reindex into @banco, @Tabela, @indice | ||
+ | |||
+ | Set Nocount On | ||
+ | While @@Fetch_Status = 0 | ||
+ | Begin | ||
+ | Print (@Tabela) | ||
+ | print('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD') | ||
+ | Exec('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD') | ||
+ | Print ' ' | ||
+ | Fetch Next From Reindex into @banco, @Tabela, @indice | ||
+ | --Print 'Status: ' + cast(@@Fetch_Status as varchar(20)) | ||
+ | End | ||
+ | Close Reindex | ||
+ | Deallocate Reindex | ||
+ | Set nocount off | ||
+ | Print '' | ||
+ | Print '*****************************************' | ||
+ | Print 'Data e Hora Fim: ' + convert(varchar(20),GetDate(),25) | ||
+ | Print '' | ||
+ | Print '' | ||
+ | </pre> | ||
+ | |||
+ | * Inserir banners em todas as bases de produção. | ||
+ | <pre> | ||
+ | select 'INSERT INTO '+ name +'..BANNER (CD_BANNER,DS_BANNER,DT_INICIO_VIGENCIA,DT_FIM_VIGENCIA,DS_SITUACAO,LINK_IMAGEM,LINK_DIRECT,NR_TIMER,CD_TAMANHO) VALUES '+ | ||
+ | ' ( (SELECT MAX(CD_BANNER) + 1 FROM '+ name +'..BANNER), ''WEBINAR 4'', GETDATE(), ''2020-05-30 00:01:00.000'', 2, ''https://sscatalogo.s3.amazonaws.com/marketing/banner_live_evo_3.jpg'', ''https://www.youtube.com/watch?v=0BzRbzEMh9A'', 1, 1); ' + | ||
+ | ' INSERT INTO '+ name +'..APLICACAO_BANNER (CD_APLICACAO_BANNER, CD_BANNER) VALUES ((SELECT MAX(CD_APLICACAO_BANNER) + 1 FROM '+ name +'..APLICACAO_BANNER), (SELECT MAX(CD_BANNER) FROM '+ name +'..BANNER));' | ||
+ | from sys.databases | ||
+ | where | ||
+ | name like 'bd_ssm_%' | ||
+ | and state_desc = 'online' | ||
+ | and name not like '%prontaentrega%' | ||
+ | and name not like '%adm%' | ||
+ | and name not like '%login%' | ||
+ | and name not like '%cpf%' | ||
+ | and name not like '%dovac%' | ||
+ | order by name desc; | ||
+ | </pre> | ||
+ | |||
+ | * Delete de registros já removidos da log_alteracao_usuario | ||
+ | |||
+ | <pre> | ||
+ | SET nocount ON; | ||
+ | |||
+ | DECLARE @r INT; | ||
+ | DECLARE @msg VARCHAR(max) | ||
+ | DECLARE @restantes INT | ||
+ | DECLARE @t1 DATETIME | ||
+ | DECLARE @t2 DATETIME | ||
+ | |||
+ | IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence | ||
+ | DROP TABLE #pode_apagar; | ||
+ | |||
+ | SET @t1 = Getdate() | ||
+ | SET @msg = 'obtendo lista de registros para apagar...' | ||
+ | |||
+ | RAISERROR(@msg,0,1) WITH nowait | ||
+ | |||
+ | SELECT cd_sinc_usuario | ||
+ | INTO #pode_apagar | ||
+ | FROM log_alteracao_usuario lau | ||
+ | WHERE EXISTS (SELECT TOP 1 1 | ||
+ | FROM log_sync_strategy las | ||
+ | WHERE lau.cd_usuario = las.cd_usuario | ||
+ | AND lau.nm_tabela = las.nm_tabela | ||
+ | AND lau.dt_insercao < las.dt_last_sync) | ||
+ | |||
+ | SET @restantes = (SELECT Count(1) | ||
+ | FROM #pode_apagar) | ||
+ | SET @msg = 'total para apagar ' | ||
+ | + Cast(@restantes AS VARCHAR(max)) + ' em ' | ||
+ | + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max)) | ||
+ | + 's' | ||
+ | |||
+ | RAISERROR(@msg,0,1) WITH nowait | ||
+ | |||
+ | SET @r = 1; | ||
+ | |||
+ | WHILE @r > 0 | ||
+ | BEGIN | ||
+ | BEGIN TRAN | ||
+ | |||
+ | SET @t2 = Getdate() | ||
+ | |||
+ | DELETE TOP (50000) lau | ||
+ | FROM log_alteracao_usuario lau | ||
+ | WHERE EXISTS (SELECT TOP 1 1 | ||
+ | FROM #pode_apagar pa | ||
+ | WHERE pa.cd_sinc_usuario = lau.cd_sinc_usuario) | ||
+ | |||
+ | SET @r = @@ROWCOUNT; | ||
+ | SET @restantes = @restantes - @r | ||
+ | SET @msg = 'apagados ' + Cast(@r AS VARCHAR(max)) | ||
+ | + ' em ' | ||
+ | + Cast(Datediff(ss, @t2, Getdate()) AS VARCHAR(max)) | ||
+ | + 's, faltam ' | ||
+ | + Cast(@restantes AS VARCHAR(max)) | ||
+ | |||
+ | RAISERROR(@msg,0,1) WITH nowait | ||
+ | |||
+ | COMMIT TRANSACTION; | ||
+ | |||
+ | CHECKPOINT; | ||
+ | END | ||
+ | |||
+ | IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence | ||
+ | DROP TABLE #pode_apagar; | ||
+ | |||
+ | SET @msg = 'finalizado em ' | ||
+ | + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max)) | ||
+ | + 's' | ||
+ | |||
+ | RAISERROR(@msg,0,1) WITH nowait | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | * Scripts para token de | ||
+ | <pre> | ||
+ | |||
+ | use bd_ssm_login; | ||
+ | |||
+ | --INSERIR INICIALMENTE UM USUÁRIO NA TABELA USUARIO DA LOGIN | ||
+ | INSERT INTO USUARIO VALUES | ||
+ | ('INTEGRADOR NOMEDAEMPRESA', 'int@nomeempresa', 'integrador@nomeempresa.com.br', '3+ACVdglI558tfon1MRmVw==', 'SS', NULL, 0, 1, NULL, GETDATE(), NULL, 0); | ||
+ | |||
+ | --INSERIR UM REGISTRO NA USUARIO_EMPRESA | ||
+ | INSERT INTO USUARIO_EMPRESA VALUES | ||
+ | ((SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), NULL, 'nomedaempresaminusculo', 1, NULL, GETDATE(), 5) | ||
+ | |||
+ | --INSERIR UM TOKEN PARA O USUÁRIO | ||
+ | INSERT INTO TOKEN VALUES | ||
+ | ((SELECT SUBSTRING(REPLACE(CAST(NEWID() AS VARCHAR(40)), '-', ''), 1, 20)), | ||
+ | (SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), | ||
+ | GETDATE(), '2030-02-06 10:14:00.593') | ||
+ | |||
+ | SELECT * FROM USUARIO WHERE NOME LIKE '%INTEGRADOR NOMEDAEMPRESA%'; | ||
+ | SELECT * FROM USUARIO_EMPRESA WHERE CD_USUARIO = 7491 | ||
+ | SELECT * FROM TOKEN WHERE CD_USUARIO = 7491 | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | SELECT * FROM USUARIO_EMPRESA UE | ||
+ | INNER JOIN USUARIO U | ||
+ | ON U.CD_USUARIO = UE.CD_USUARIO | ||
+ | WHERE NM_EMPRESA = 'lorenferhomolog' | ||
+ | AND UE.PAPEL = 5 | ||
+ | |||
+ | SELECT * FROM TOKEN WHERE CD_USUARIO = 8353 | ||
+ | </pre> | ||
+ | |||
+ | * Atalhos para tj2 | ||
+ | Endpoints | ||
+ | |||
+ | /api/about/ | ||
+ | /importstatus | ||
+ | /importstatus/{id} | ||
+ | /importstatus-logged | ||
+ | /importstatus-logged/{id} | ||
+ | |||
+ | {"PRODUTO_ESTOQUE":[{"id":"-2147483648","cd_produto":"111","cd_estoque":"0","qt_estoque":"999999"}]} | ||
+ | |||
+ | curl http://169.61.109.210:8185/erp-importer/campneushomolog/import -H 'SSAUTH_TOKEN: 123' -H 'Content-type: application/json' -X POST -d @dados.json | ||
+ | |||
+ | {"ROTA":[{"cd_rota":"1","ds_rota":"SEGUNDA-FEIRA","ds_dias_rota":"1","ativa":"1"},{"cd_rota":"2","ds_rota":"TERCA-FEIRA","ds_dias_rota":"1","ativa":"1"}]} | ||
+ | |||
+ | * Inserir limitação de conexões para um aplicativo com Hikari GS | ||
+ | |||
+ | <pre> | ||
+ | use bd_ssm_adm; | ||
+ | |||
+ | SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'SSBATCHES'; | ||
+ | SELECT * FROM EMPRESA; | ||
+ | |||
+ | |||
+ | INSERT INTO EMPRESA_BD_PROPERTIES | ||
+ | SELECT | ||
+ | CD_EMPRESA, 'SSBATCHES', NULL, 2 | ||
+ | FROM EMPRESA E | ||
+ | INNER JOIN SYS.DATABASES SDBS | ||
+ | ON ('BD_SSM_' + E.NM_EMPRESA) = SDBS.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS; | ||
+ | </pre> | ||
+ | |||
+ | * Atualizações de quantidades de conexões dos serviços de integração | ||
+ | <pre> | ||
+ | use bd_ssm_adm; | ||
+ | |||
+ | --ERP-INTEGRATOR | ||
+ | SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('pardalsorvetes','wsembalagens','paodahora','lacbom', | ||
+ | 'gustamais','futuragrohomolog','mizu','auster','austerhomolog','yama','grupoisdrahomolog','bakerfoods','dicoplasthomolog','iranduba', | ||
+ | 'motasa','serveng','fiore','gol','iranduba','lebrinha') | ||
+ | |||
+ | SELECT * FROM EMPRESA_BD_PROPERTIES | ||
+ | WHERE APPNAME = 'TJ2' | ||
+ | AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688) | ||
+ | |||
+ | --UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15 | ||
+ | --WHERE APPNAME = 'TJ2' | ||
+ | -- AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688) | ||
+ | |||
+ | --ERP-IMPORTER | ||
+ | SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('campneus','lacbom','lebrinha','mizu') | ||
+ | |||
+ | SELECT * FROM EMPRESA_BD_PROPERTIES | ||
+ | WHERE APPNAME = 'tj-importer' | ||
+ | AND CD_EMPRESA IN (549,581,584,609) | ||
+ | |||
+ | UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15 | ||
+ | WHERE APPNAME = 'tj-importer' | ||
+ | AND CD_EMPRESA IN (549,581,584,609) | ||
+ | |||
+ | --ERP-IMPORTERNEW | ||
+ | SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('montana','montanahomolog') | ||
+ | |||
+ | SELECT * FROM EMPRESA_BD_PROPERTIES | ||
+ | WHERE APPNAME = 'tj-importernew' | ||
+ | AND CD_EMPRESA IN (640,641) | ||
+ | |||
+ | UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15 | ||
+ | WHERE APPNAME = 'tj-importernew' | ||
+ | AND CD_EMPRESA IN (640,641) | ||
+ | |||
+ | --NEOGRID | ||
+ | SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('davene','davenehomolog','casakm','casakmhomolog') | ||
+ | |||
+ | SELECT * FROM EMPRESA_BD_PROPERTIES | ||
+ | WHERE APPNAME = 'neogrid' | ||
+ | AND CD_EMPRESA IN (587,599,642,643) | ||
+ | |||
+ | UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 5 | ||
+ | WHERE APPNAME = 'neogrid' | ||
+ | AND CD_EMPRESA IN (587,599,642,643) | ||
+ | </pre> | ||
+ | |||
+ | * Contar quantidade de conexões por serviços | ||
+ | |||
+ | <pre> | ||
+ | use bd_ssm_adm; | ||
+ | |||
+ | SELECT COUNT(*), sd.name FROM sys.sysprocesses sp | ||
+ | inner join sys.sysdatabases sd on sp.dbid = sd.dbid | ||
+ | WHERE program_name LIKE '%tj-importer%' group by sd.name | ||
+ | |||
+ | SELECT COUNT(*), sd.name FROM sys.sysprocesses sp | ||
+ | inner join sys.sysdatabases sd on sp.dbid = sd.dbid | ||
+ | WHERE program_name LIKE '%TJ2%' group by sd.name | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | * Magia do Jeff | ||
+ | <pre> | ||
+ | AND DS_OBSERVACAO LIKE '%[^A-Za-z@#$0-9@/_ .,+%!-]%' | ||
+ | </pre> | ||
+ | |||
+ | * Script de limpeza de registros duplicados. | ||
+ | <pre> | ||
+ | BEGIN TRANSACTION | ||
+ | |||
+ | CREATE TABLE TABELA_TEMP ( | ||
+ | CD_USUARIO INT, | ||
+ | LONGITUDE DECIMAL(10, 6), | ||
+ | LATITUDE DECIMAL(10, 6), | ||
+ | DT_COORD DATETIME, | ||
+ | PRECISAO INT, | ||
+ | ORIGEM VARCHAR(2) | ||
+ | ) | ||
+ | |||
+ | INSERT INTO TABELA_TEMP | ||
+ | SELECT DISTINCT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM COORDENADA_RASTREAMENTO ORDER BY DT_COORD ASC; | ||
+ | |||
+ | TRUNCATE TABLE COORDENADA_RASTREAMENTO; | ||
+ | |||
+ | INSERT INTO COORDENADA_RASTREAMENTO (CD_USUARIO, LONGITUDE, LATITUDE, DT_COORD, PRECISAO, ORIGEM) | ||
+ | SELECT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM TABELA_TEMP ORDER BY DT_COORD ASC; | ||
+ | |||
+ | DROP TABLE TABELA_TEMP; | ||
+ | COMMIT; | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | *Criação de usuários de clientes na makita | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | SELECT * FROM USUARIO_VINCULACAO; | ||
+ | |||
+ | INSERT INTO TGRUPOSUSUARIO (CD_USUARIO, CD_GRUPO) | ||
+ | SELECT CD_USUARIO, 7 FROM TUSUARIO WHERE DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A==' | ||
+ | |||
+ | INSERT INTO USUARIO_VINCULACAO (CD_TUSUARIO, CD_VINCULADO, CD_TIPO_VINCULADO) | ||
+ | SELECT T.CD_USUARIO, C.CD_CLIENTE, 'C' FROM TUSUARIO T | ||
+ | INNER JOIN CLIENTE C ON C.NR_CNPJ_CPF = T.NM_GUERRA COLLATE SQL_Latin1_General_CP1_CI_AS | ||
+ | WHERE T.DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A==' | ||
+ | AND C.CD_CLIENTE IN (13913) | ||
+ | |||
+ | INSERT INTO TUSUARIO (CD_USUARIO,NM_USUARIO,DS_EMAIL,DS_SENHA,ID_SUPER,NM_GUERRA,DT_EXPSENHA,DT_ALTSENHA,NR_VIOLACOES, | ||
+ | CD_SITUACAO,DT_SITUACAO,DS_MOTIVO_SITUACAO,ID_ALT_SENHA_PROX_LOGIN,CD_TPUSUARIO,CD_EMPRESA,CD_FILIAL,ID_USER_SOFTSITE, | ||
+ | ID_ATIVO,IMEI_GPS) | ||
+ | SELECT ((SELECT MAX(CD_USUARIO) FROM TUSUARIO) + ROW_NUMBER() OVER(ORDER BY CD_CLIENTE ASC)) AS CD_USUARIO, | ||
+ | CAST(C.NM_CLIENTE AS VARCHAR(40)) AS NM_USUARIO, | ||
+ | C.DS_EMAIL, | ||
+ | '4ZdOxz2fsGR3xqAJeGo82A==' AS DS_SENHA, | ||
+ | 'N' AS ID_SUPER, | ||
+ | C.NR_CNPJ_CPF AS NM_GUERRA, | ||
+ | NULL AS DT_EXPSENHA, | ||
+ | GETDATE() AS DT_ALTSENHA, | ||
+ | 0 AS NR_VIOLACOES, | ||
+ | 1 AS CD_SITUACAO, | ||
+ | GETDATE() AS DT_SITUACAO, | ||
+ | NULL AS DS_MOTIVO_SITUACAO, | ||
+ | NULL AS ID_ALT_SENHA_PROX_LOGIN, | ||
+ | NULL AS CD_TPUSUARIO, | ||
+ | NULL AS CD_EMPRESA, | ||
+ | NULL AS CD_FILIAL, | ||
+ | 'N' AS ID_USER_SOFTSITE, | ||
+ | NULL AS ID_ATIVO, | ||
+ | NULL AS IMEI_GPS | ||
+ | FROM CLIENTE C | ||
+ | WHERE CD_CLIENTE IN (13913) | ||
+ | AND NOT EXISTS (SELECT TOP 1 1 FROM USUARIO_VINCULACAO UE WHERE C.CD_CLIENTE = UE.CD_VINCULADO) | ||
+ | |||
+ | |||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Visualização de falhas de importação | ||
+ | |||
+ | <pre> | ||
+ | DECLARE @nomeBanco varchar(100); | ||
+ | |||
+ | DECLARE bancos CURSOR FOR | ||
+ | SELECT name | ||
+ | FROM sys.databases where | ||
+ | name like 'bd_ssm_%' | ||
+ | and state_desc = 'online' | ||
+ | and name not like '%prontaentrega%' | ||
+ | and name not like '%adm%' | ||
+ | and name not like '%login%' | ||
+ | and name not like '%cpf%' | ||
+ | and name not like '%expressa%' | ||
+ | and name not like '%makitahomolog%' | ||
+ | and name not like '%prodentho_2%' | ||
+ | |||
+ | OPEN bancos | ||
+ | |||
+ | FETCH NEXT FROM bancos | ||
+ | INTO @nomeBanco | ||
+ | |||
+ | WHILE @@FETCH_STATUS = 0 | ||
+ | BEGIN | ||
+ | EXEC ('use ' + @nomeBanco + ';' + 'SELECT TOP 1 ''NOME DO BANCO '' + REPLACE(''' + @nomeBanco +''', ''bd_ssm_'','''') , * FROM DW_IMPORTACAO WHERE ISNULL(RESULTADO, ''A'') IN (''F'', ''A'') ORDER BY 4 DESC;'); | ||
+ | END | ||
+ | CLOSE bancos; | ||
+ | DEALLOCATE bancos; | ||
+ | </pre> | ||
+ | |||
+ | * Configurar base para usar o Claudus V3 | ||
+ | <pre> | ||
+ | ALTER TABLE LOG_ITEM_PEDIDO | ||
+ | ADD NR_ITEM_PEDIDO BIGINT | ||
+ | GO | ||
+ | |||
+ | ALTER TABLE LOG_ITEM_PEDIDO_RETORNO | ||
+ | ADD NR_ITEM_PEDIDO BIGINT | ||
+ | |||
+ | GO | ||
+ | |||
+ | ALTER TRIGGER [dbo].[TR_AUDIT_LOG_DELETE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR DELETE | ||
+ | |||
+ | AS | ||
+ | DECLARE @TODAY DATETIME | ||
+ | SET @TODAY = GETDATE() | ||
+ | |||
+ | INSERT INTO LOG_ITEM_PEDIDO | ||
+ | ( | ||
+ | DT_LOG | ||
+ | ,ID_KEY | ||
+ | ,TP_OPERACAO | ||
+ | ,CD_PEDIDO_PALM | ||
+ | ,NR_ITEM_PEDIDO | ||
+ | ,CD_PRODUTO | ||
+ | ) | ||
+ | SELECT | ||
+ | @TODAY as DT_LOG | ||
+ | ,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY | ||
+ | |||
+ | ,'D' as TP_OPERACAO | ||
+ | ,CD_PEDIDO_PALM | ||
+ | ,NR_ITEM_PEDIDO | ||
+ | ,CD_PRODUTO | ||
+ | |||
+ | FROM DELETED | ||
+ | |||
+ | GO | ||
+ | |||
+ | ALTER TRIGGER [dbo].[TR_AUDIT_LOG_UPDATE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR UPDATE | ||
+ | |||
+ | AS | ||
+ | DECLARE @TODAY DATETIME | ||
+ | SET @TODAY = GETDATE() | ||
+ | |||
+ | INSERT INTO LOG_ITEM_PEDIDO | ||
+ | ( | ||
+ | DT_LOG | ||
+ | ,ID_KEY | ||
+ | ,TP_OPERACAO | ||
+ | ,CD_PEDIDO_PALM | ||
+ | ,NR_ITEM_PEDIDO | ||
+ | ,CD_PRODUTO | ||
+ | ) | ||
+ | SELECT | ||
+ | @TODAY as DT_LOG | ||
+ | ,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY | ||
+ | |||
+ | ,'U' as TP_OPERACAO | ||
+ | ,CD_PEDIDO_PALM | ||
+ | ,NR_ITEM_PEDIDO | ||
+ | ,CD_PRODUTO | ||
+ | |||
+ | FROM INSERTED | ||
+ | |||
+ | GO | ||
+ | |||
+ | ALTER TRIGGER [dbo].[TR_AUDIT_LOG_INSERT_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR INSERT | ||
+ | |||
+ | AS | ||
+ | DECLARE @TODAY DATETIME | ||
+ | SET @TODAY = GETDATE() | ||
+ | |||
+ | INSERT INTO LOG_ITEM_PEDIDO | ||
+ | ( | ||
+ | DT_LOG | ||
+ | ,ID_KEY | ||
+ | ,TP_OPERACAO | ||
+ | ,CD_PEDIDO_PALM | ||
+ | ,NR_ITEM_PEDIDO | ||
+ | ,CD_PRODUTO | ||
+ | ) | ||
+ | SELECT | ||
+ | @TODAY as DT_LOG | ||
+ | ,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY | ||
+ | |||
+ | ,'I' as TP_OPERACAO | ||
+ | ,CD_PEDIDO_PALM | ||
+ | ,NR_ITEM_PEDIDO | ||
+ | ,CD_PRODUTO | ||
+ | |||
+ | FROM INSERTED | ||
+ | GO | ||
+ | </pre> | ||
+ | |||
+ | * Consulta para trazer os pedidos auto do geosales3 | ||
+ | <pre> | ||
+ | SELECT cd_pedido_cliente [cdPedidoCliente], | ||
+ | pa.cnpj_cliente [cliente.nrCnpjCpf], | ||
+ | c.cd_cliente [cliente.cdCliente], | ||
+ | c.nm_cliente [cliente.nmCliente], | ||
+ | c.cd_org_venda_padrao [cliente.orgVendaPadrao.cdOrgVenda], | ||
+ | ov.nm_organizacao [cliente.orgVendaPadrao.nmOrganizacao], | ||
+ | c.cd_vendedor_padrao [cliente.vendedorPadrao.codigo], | ||
+ | v.nm_vendedor [cliente.vendedorPadrao.nome], | ||
+ | c.cd_tab_preco_padrao [cliente.tabPrecoPadrao.cdTabPreco], | ||
+ | tp.ds_tab_preco [cliente.tabPrecoPadrao.dsTabPreco], | ||
+ | c.nm_estado [cliente.enderecoPadrao.nmEstado], | ||
+ | c.cd_cond_pgto_padrao [cliente.condPgtoPadrao.cdCondPgto], | ||
+ | cp.ds_cond_pgto [cliente.condPgtoPadrao.dsCondPgto], | ||
+ | c.cd_meio_pgto_padrao [cliente.meioPagamentoPadrao.cdMeioPgto], | ||
+ | mp.ds_meio_pgto [cliente.meioPagamentoPadrao.dsMeioPgto], | ||
+ | cnpj_fornecedor [cnpjFornecedor], | ||
+ | dt_emissao [dataEmissaoStr], | ||
+ | cp.cd_cond_pgto [condicaoPagamento.cdCondPgto], | ||
+ | cp.ds_cond_pgto [condicaoPagamento.dsCondPgto], | ||
+ | cp.pr_desconto [condicaoPagamento.prDescontoStr], | ||
+ | dt_vencimento [dataVencimentoStr], | ||
+ | cd_tipo_frete [frete.idTipoFrete], | ||
+ | motivo_bonificacao [motivoBonificacao], | ||
+ | dt_entrega [dataEntregaStr], | ||
+ | obs_pedido [observacaoPedido], | ||
+ | pa.cd_tipo_pedido [tipoPedido.codTipo], | ||
+ | tmp.ds_tipo [tipoPedido.descTipo], | ||
+ | id_utilizado [idUtilizadoStr] | ||
+ | FROM pedido_auto pa | ||
+ | INNER JOIN cliente c ON pa.cnpj_cliente = c.nr_cnpj_cpf | ||
+ | INNER JOIN organizacao_venda ov ON c.cd_org_venda_padrao = ov.cd_org_venda | ||
+ | INNER JOIN vendedor v ON c.cd_vendedor_padrao = v.cd_vendedor | ||
+ | INNER JOIN tabela_preco tp ON c.cd_tab_preco_padrao = tp.cd_tab_preco | ||
+ | INNER JOIN condicao_pagamento cp ON c.cd_cond_pgto_padrao = cp.cd_cond_pgto | ||
+ | INNER JOIN meio_pagamento mp ON mp.cd_meio_pgto = c.cd_meio_pgto_padrao | ||
+ | INNER JOIN tipo_movimento_pedido tmp ON pa.cd_tipo_pedido = tmp.cd_tipo | ||
+ | WHERE ( EXISTS ( SELECT TOP 1 1 | ||
+ | FROM Fn_obter_cliente_usuario(#usuario.codigo#) fn | ||
+ | WHERE ( fn.cd_cliente = c.cd_cliente ) | ||
+ | ) | ||
+ | ) AND pa.id_utilizavel = 'S' AND id_utilizado = 'N' | ||
+ | </pre> | ||
+ | |||
+ | * Scripts de análise de configuração do novo aplicativo de rastreamento | ||
+ | <pre> | ||
+ | --CONFIGURACAO | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_BASE_URL%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_CAPTURAR_LOG%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_FUNCTION_MODE%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_START%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_FINISH%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_LOGGED_APP%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_MIN_DISTANCE%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_N_TRY%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_ENVIAR_LOG%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_INSERIR_LOG%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_SLEEP_TRY%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_STOP_SERVICE_PERMISSION%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TIMER_BATTERY%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TRIANGULATION_ACTIVE%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_VIEW_CONFIGURATION%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_GPS%' | ||
+ | SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_LOCK%' | ||
+ | |||
+ | --IMEI USUARIO | ||
+ | SELECT IMEI_GPS, * FROM TUSUARIO WHERE CD_USUARIO = 181 --358692106755103 | ||
+ | --VENDEDOR DE ANÁLISE | ||
+ | SELECT IMEI, * FROM DADOS_VENDEDOR WHERE CD_VENDEDOR = 37; --358692106755103 | ||
+ | --VERIFICAR STATUS DO GPS | ||
+ | SELECT * FROM GPS_STATUS WHERE CD_USUARIO = 181 order by 3 desc; | ||
+ | --VERIFICAR COORDENADAS | ||
+ | SELECT * FROM COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 181 order by 5 desc | ||
+ | |||
+ | |||
+ | --teste | ||
+ | SELECT * FROM bd_ssm_webinargeosales..GPS_STATUS WHERE CD_USUARIO = 155 order by 3 desc; | ||
+ | SELECT * FROM bd_ssm_webinargeosales..COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 155 ORDER BY 5 DESC; | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | --GPS STATUS | ||
+ | --A - ATIVO - (GPS OU INTERNET) | ||
+ | --D - DESATIVADO - (GPS OU INTERNET) | ||
+ | --C - DESTRUIÇÃO DO SERVIÇO DE CONFIGURACAO | ||
+ | --R - DESTRUIÇÃO DO SERVIÇO DE RASTREAMENTO | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Achar tabelas que tem a coluna Y | ||
+ | <pre> | ||
+ | select SO.NAME, * from sys.columns SC | ||
+ | INNER JOIN sys.objects SO | ||
+ | ON SC.object_id = SO.object_id where SC.name like '%cd_org_venda%' | ||
+ | and type = 'U' | ||
+ | </pre> | ||
+ | |||
+ | * Migrar imagens de catálogo para produto imagem no evo | ||
+ | |||
+ | <pre> | ||
+ | BEGIN TRANSACTION | ||
+ | |||
+ | DECLARE @Imagens TABLE(DESC_FOTO VARCHAR(100), URL VARCHAR(1000), ID_ATIVO bit) | ||
+ | DECLARE @ProdutoImagens TABLE(CD_PRODUTO INT, CD_IMAGEM INT, ID_PRINCIPAL CHAR(1), ID_ATIVO BIT) | ||
+ | INSERT INTO @Imagens | ||
+ | SELECT DISTINCT DS_FOTO, DS_URL, 1 FROM CATALOGO_FOTO; | ||
+ | |||
+ | INSERT INTO IMAGEM | ||
+ | SELECT ROW_NUMBER() OVER(ORDER BY DESC_FOTO ASC), DESC_FOTO, URL, ID_ATIVO FROM @Imagens; | ||
+ | |||
+ | INSERT INTO @ProdutoImagens | ||
+ | SELECT CF.CD_PRODUTO, I.CD_IMAGEM, CF.ID_PRINCIPAL, 1 FROM | ||
+ | IMAGEM I | ||
+ | INNER JOIN CATALOGO_FOTO CF | ||
+ | ON I.URL_IMAGEM = CF.DS_URL | ||
+ | WHERE CD_PRODUTO IS NOT NULL | ||
+ | |||
+ | INSERT INTO PRODUTO_IMAGEM | ||
+ | SELECT DISTINCT CD_PRODUTO, CD_IMAGEM, ID_PRINCIPAL, ID_ATIVO FROM | ||
+ | @ProdutoImagens | ||
+ | COMMIT; | ||
+ | </pre> | ||
+ | |||
+ | * VERIFICAR PORQUE O PRODUTO NÃO APARECE PRO CLIENTE APÓS O PREENCHIMENTO DO CABEÇALHO | ||
+ | <pre> | ||
+ | --consulta que traz os pedido quando multiplos estoques está ativado | ||
+ | SELECT | ||
+ | p.cd_produto,* | ||
+ | FROM fn_obter_produtos_com_paginacao('0101089', 2, | ||
+ | 38, null) pot | ||
+ | INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto | ||
+ | |||
+ | --INNER JOIN familia_produto fp ON p.cd_familia = fp.cd_familia AND fp.cd_familia = #{familia.key} | ||
+ | |||
+ | INNER JOIN lista_produto lp WITH(NOLOCK) ON (lp.cd_produto = pot.cd_produto AND lp.cd_org_venda = pot.cd_org_venda AND lp.cd_tab_preco = pot.cd_tab_preco) | ||
+ | where | ||
+ | EXISTS ( | ||
+ | SELECT 1 FROM produto_estoque pe | ||
+ | WHERE | ||
+ | pe.cd_produto = p.cd_produto AND pe.cd_estoque = 200 | ||
+ | ) | ||
+ | |||
+ | ORDER BY p.nm_produto OFFSET 0 ROWS FETCH NEXT 18 ROWS ONLY | ||
+ | |||
+ | --funcão de paginação | ||
+ | CREATE FUNCTION [dbo].[fn_obter_produtos_com_paginacao] ( | ||
+ | @cdOrgVenda VARCHAR(20), | ||
+ | @cdTabPreco INT, | ||
+ | @cdCliente INT, | ||
+ | @param VARCHAR(100)) | ||
+ | RETURNS TABLE | ||
+ | AS | ||
+ | RETURN ( | ||
+ | WITH org_venda AS ( | ||
+ | SELECT | ||
+ | ov.cd_org_venda, | ||
+ | ovc.cd_cliente, | ||
+ | ov.cd_estoque, | ||
+ | |||
+ | ovc.cd_tab_preco | ||
+ | FROM organizacao_venda ov WITH(NOLOCK) | ||
+ | INNER JOIN org_venda_cliente ovc WITH(NOLOCK) ON ov.cd_org_venda = ovc.cd_org_venda | ||
+ | WHERE ov.cd_org_venda = @cdOrgVenda AND ovc.cd_tab_preco = @cdTabPreco | ||
+ | AND ovc.cd_cliente = @cdCliente | ||
+ | |||
+ | ), produto_organizacao_tabela AS ( | ||
+ | SELECT | ||
+ | p.cd_produto, | ||
+ | p.nm_produto, | ||
+ | ov.cd_cliente, | ||
+ | ov.cd_org_venda, | ||
+ | ov.cd_estoque, | ||
+ | ov.cd_tab_preco | ||
+ | FROM produto p WITH(NOLOCK) | ||
+ | CROSS JOIN org_venda ov WITH(NOLOCK) | ||
+ | WHERE ( | ||
+ | (@param IS NULL) | ||
+ | OR | ||
+ | (p.nm_produto LIKE '%' + @param + '%' | ||
+ | OR p.cd_produto LIKE '%' + @param + '%' | ||
+ | OR p.cd_referencia LIKE '%' + @param + '%' | ||
+ | OR p.cod_barras LIKE '%' + @param + '%' | ||
+ | OR p.cd_ncm LIKE '%' + @param + '%') | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | SELECT | ||
+ | p.cd_pr | ||
+ | oduto, | ||
+ | pot.cd_org_venda, | ||
+ | pot.cd_tab_preco, | ||
+ | pot.cd_estoque | ||
+ | FROM produto_organizacao_tabela pot | ||
+ | INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto | ||
+ | ) | ||
+ | |||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Remover usuários inválidos de uma base mssql | ||
+ | <pre> | ||
+ | |||
+ | declare @db varchar(50) | ||
+ | declare @cont int | ||
+ | declare @usuariodb varchar(50) | ||
+ | declare @cmd varchar (200) | ||
+ | --set @db = (SELECT '?' AS db_name) | ||
+ | --print @db | ||
+ | create table ##usuariobd (cod int primary key identity, nome_usuario varchar (50), nome_login | ||
+ | varchar(50)) | ||
+ | insert into ##usuariobd | ||
+ | select su.name, sl.name--, db_name() | ||
+ | from [dbo].[sysusers] su | ||
+ | left join sys.syslogins sl on su.sid = sl.sid | ||
+ | where su.uid > 4 | ||
+ | and su.name not like 'db_%' | ||
+ | and su.name <> 'MS_DataCollectorInternalUser' | ||
+ | and issqlrole <> 1 | ||
+ | and sl.name is null | ||
+ | order by 1 | ||
+ | set @cont = (select MAX(cod) from ##usuariobd) | ||
+ | while @cont >0 | ||
+ | begin | ||
+ | set @usuariodb = (select nome_usuario from ##usuariobd where cod = @cont) | ||
+ | IF EXISTS (SELECT SCHEMA_ID FROM sys.schemas WHERE [name] = @usuariodb) | ||
+ | BEGIN | ||
+ | print 'Deletando Schema ' + @usuariodb | ||
+ | set @cmd = 'drop schema [' + @usuariodb + ']' | ||
+ | print @cmd | ||
+ | exec (@cmd) | ||
+ | END | ||
+ | print 'Deletando usuário '+ @usuariodb + '!' | ||
+ | set @cmd= 'drop user [' + @usuariodb + ']' | ||
+ | exec (@cmd) | ||
+ | set @cont = @cont -1 | ||
+ | end | ||
+ | drop table ##usuariobd | ||
+ | </pre> | ||
+ | |||
+ | * Pegar dados servidor de banco de dados | ||
+ | <pre> | ||
+ | SELECT @@SERVERNAME, | ||
+ | CONNECTIONPROPERTY('net_transport') AS net_transport, | ||
+ | CONNECTIONPROPERTY('protocol_type') AS protocol_type, | ||
+ | CONNECTIONPROPERTY('auth_scheme') AS auth_scheme, | ||
+ | CONNECTIONPROPERTY('local_net_address') AS local_net_address, | ||
+ | CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port, | ||
+ | CONNECTIONPROPERTY('client_net_address') AS client_net_address | ||
+ | </pre> | ||
+ | |||
+ | * Agregador de dados | ||
+ | <pre> | ||
+ | SELECT c.cd_cliente, STRING_AGG(r.DS_ROTA, ', ') | ||
+ | FROM cliente c | ||
+ | LEFT JOIN CLIENTE_ROTA cr on c.CD_CLIENTE = cr.CD_CLIENTE | ||
+ | LEFT JOIN ROTA r on r.CD_ROTA = cr.CD_ROTA | ||
+ | GROUP BY c.cd_cliente | ||
+ | </pre> | ||
+ | |||
+ | * Script para validar se o pedido pode ser copiado | ||
+ | |||
+ | <pre> | ||
+ | SELECT | ||
+ | -- pedido | ||
+ | P.cd_pedido_palm AS [cdPedidoPalm], | ||
+ | P.dt_emissao AS [dtEmissao], | ||
+ | P.dt_vencimento AS [dtVencimento], | ||
+ | P.cd_pedido_cliente AS [cdPedidoCliente], | ||
+ | P.cd_pedido AS [cdPedido], | ||
+ | P.dt_entrega AS [dtEntrega], | ||
+ | P.dt_faturamento AS [dtFaturamento], | ||
+ | P.dt_entrega_calculada AS [dtEntregaCalculada], | ||
+ | P.id_prioridade AS [idPrioridade], | ||
+ | P.ds_observacao AS [observacao], | ||
+ | P.ds_obs_frete AS [observacaoFrete], | ||
+ | P.ds_observacao_nf AS [observacaoNotaFiscal], | ||
+ | P.nm_rz_social_entr AS [nmRazaoSocialEntrega], | ||
+ | P.nr_cnpj_cpf_entr AS [cpfCnpjEntrega], | ||
+ | P.nr_cgf_entr AS [cgfEntrega], | ||
+ | P.nm_responsavel AS [nomeResponsavel], | ||
+ | P.id_orcamento AS [orcamento], | ||
+ | P.cd_rota AS [cdRota], | ||
+ | P.id_efetivado AS [efetivado], | ||
+ | P.pc_desconto AS [pcDesconto], | ||
+ | P.id_cross_docking AS [crossDocking], | ||
+ | P.pc_desc_bonif AS [pcDescBonif], | ||
+ | P.vr_outros_descontos AS [outrosDescontos], | ||
+ | P.vr_frete_manual AS [vrFreteManual], | ||
+ | P.vr_frete_manual_original AS [vrFreteManualOriginal], | ||
+ | P.acrescimo_dias AS [acrescimoDias], | ||
+ | P.qt_quilometros_entrega AS [qtQuilometrosEntrega], | ||
+ | P.qt_quilometros_cobranca AS [qtQuilometrosCobranca], | ||
+ | -- cliente --> | ||
+ | C.cd_cliente AS [cliente@cdCliente], | ||
+ | C.cd_aprovacao AS [cliente@cdAprCliente], | ||
+ | CASE WHEN | ||
+ | C.origem = 'CLIENTE_APROVACAO' THEN 1 | ||
+ | ELSE 0 | ||
+ | END AS [cliente@isProspect], | ||
+ | -- organizacao venda | ||
+ | OV.cd_org_venda AS [orgVenda@cdOrgVenda], | ||
+ | -- tipo pedido | ||
+ | TMP.cd_tipo AS [tipoPedido@codTipo], | ||
+ | -- vendedor | ||
+ | V.cd_vendedor AS [vendedor@codigo], | ||
+ | -- tabela preco | ||
+ | TP.cd_tab_preco AS [tabPreco@cdTabPreco], | ||
+ | -- estoque | ||
+ | P.cd_estoque AS [estoque@cdEstoque], | ||
+ | -- canal de venda | ||
+ | p.cd_canal AS [canalVenda@codigo], | ||
+ | -- meio pagamento | ||
+ | P.cd_meio_pgto AS [meioPagamento@cdMeioPgto], | ||
+ | -- meio pagamento secundario | ||
+ | P.cd_meio_pgto_sec AS [meioPgtoSecundario@cdMeioPgto], | ||
+ | -- cond. pgto | ||
+ | P.cd_cond_pgto AS [condPgto@cdCondPgto], | ||
+ | -- cond. pgto secundario | ||
+ | P.cd_cond_pgto_sec AS [condPgtoSecundario@cdCondPgto], | ||
+ | -- tipo frete | ||
+ | P.id_tipo_frete AS [tipoFrete@idTipoFrete], | ||
+ | -- transportadora | ||
+ | P.cd_transportadora AS [transportadora@codigo], | ||
+ | -- transportadora auxiliar | ||
+ | p.cd_transportadora_auxiliar AS [transportadoraAuxiliar@codigo], | ||
+ | -- situacao pedido | ||
+ | SP.cd_st_pedido AS [situacaoPedido@cdStPedido], | ||
+ | SP.ds_st_pedido AS [situacaoPedido@dsStPedido], | ||
+ | -- pedido pai | ||
+ | PPAI.cd_pedido_palm AS [pedidoPaiDTO@cdPedidoPalm], | ||
+ | PPAI.dt_emissao AS [pedidoPaiDTO@dtEmissao], | ||
+ | PPAI.vr_pedido_impostos AS [pedidoPaiDTO@vrPedidoImpostos], | ||
+ | -- endereco entrega | ||
+ | P.cd_endereco_entrega AS [enderecoEntrega@cdEndereco], | ||
+ | P.ds_endereco_entr AS [enderecoEntrega@dsEndereco], | ||
+ | P.nm_bairro_entr AS [enderecoEntrega@nmBairro], | ||
+ | P.nm_cidade_entr AS [enderecoEntrega@nmCidade], | ||
+ | P.nm_estado_entr AS [enderecoEntrega@nmEstado], | ||
+ | P.nr_cep_entr AS [enderecoEntrega@nrCep], | ||
+ | P.nr_fone_entr AS [enderecoEntrega@nrTelefone], | ||
+ | P.nr_cnpj_cpf_entr AS [enderecoEntrega@nrCnpjCpf], | ||
+ | -- endereco cobranca | ||
+ | P.cd_endereco_cobranca AS [enderecoCobranca@cdEndereco], | ||
+ | P.ds_endereco_cobr AS [enderecoCobranca@dsEndereco], | ||
+ | P.nm_bairro_cobr AS [enderecoCobranca@nmBairro], | ||
+ | P.nm_cidade_cobr AS [enderecoCobranca@nmCidade], | ||
+ | P.nm_estado_cobr AS [enderecoCobranca@nmEstado], | ||
+ | P.nr_cep_cobr AS [enderecoCobranca@nrCep], | ||
+ | P.nr_fone_cobr AS [enderecoCobranca@nrTelefone], | ||
+ | P.nr_cnpj_cpf_cobr AS [enderecoCobranca@nrCnpjCpf], | ||
+ | -- pedido informacao extra | ||
+ | PIEXT.cd_inf AS [pedInfoExtra@cdInf], | ||
+ | PIEXT.ds_inf AS [pedInfoExtra@dsLabel], | ||
+ | PIEXT.cd_tipo_inf AS [pedInfoExtra@cdTipoInf], | ||
+ | PIEXT.ds_livre_inf AS [pedInfoExtra@dsLivreInf], | ||
+ | -- tramitacao_pedido | ||
+ | trp.cd_pedido_palm AS [tramitacaoPedido@cdPedidoPalm], | ||
+ | trp.cd_pedido_palm AS [tramitacaoPedido@pedido@cdPedidoPalm], | ||
+ | trp.cd_tramitacao AS [tramitacaoPedido@tramitacao@cdTramitacao], | ||
+ | tram.ds_tramitacao AS [tramitacaoPedido@tramitacao@dsTramitacao], | ||
+ | trp.ds_observacao AS [tramitacaoPedido@dsObservavao], | ||
+ | trp.dt_tramitacao AS [tramitacaoPedido@dtTramitacao], | ||
+ | trp.cd_usuario AS [tramitacaoPedido@usuarioSistema@codigo], | ||
+ | -- tramitacao_pedido | ||
+ | P.cd_motivo_pedido AS [motivoPedido@cdMotivoPedido], | ||
+ | mot.ds_motivo_pedido AS [motivoPedido@dsMotivoPedido] | ||
+ | FROM vw_pedidos P | ||
+ | INNER JOIN (SELECT cd_cliente, nm_cliente, cd_aprovacao, origem FROM vw_clientes) C on (P.cd_cliente = C.cd_cliente) | ||
+ | INNER JOIN (SELECT cd_org_venda, nm_organizacao FROM organizacao_venda WITH (NOLOCK)) OV ON P.cd_org_venda = OV.cd_org_venda | ||
+ | INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo FROM tipo_movimento_pedido) TMP on (P.cd_tipo_pedido = TMP.cd_tipo) | ||
+ | INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor) V ON P.cd_vendedor = V.cd_vendedor | ||
+ | INNER JOIN tabela_preco TP ON P.cd_tab_preco = TP.cd_tab_preco | ||
+ | LEFT JOIN situacao_pedido sp ON P.cd_st_pedido = sp.cd_st_pedido | ||
+ | LEFT JOIN (SELECT cd_pedido_palm, dt_emissao, vr_pedido_impostos FROM vw_pedidos WITH(NOLOCK)) ppai ON P.cd_pedido_palm_pai = ppai.cd_pedido_palm | ||
+ | LEFT JOIN vw_pedidos_informacoes_extras PIEXT ON P.cd_pedido_palm = PIEXT.cd_pedido_palm | ||
+ | LEFT JOIN vw_tramitacoes_pedidos trp WITH(NOLOCK) ON P.cd_pedido_palm = trp.cd_pedido_palm | ||
+ | LEFT JOIN tramitacao tram ON trp.cd_tramitacao = tram.cd_tramitacao | ||
+ | LEFT JOIN motivo_pedido mot ON mot.cd_motivo_pedido = P.cd_motivo_pedido | ||
+ | WHERE | ||
+ | P.cd_pedido_palm = 20063013102232739 | ||
+ | AND ( | ||
+ | ( | ||
+ | (P.origem = 'PEDIDO_RETORNO' OR P.origem = 'PEDIDO') | ||
+ | AND EXISTS ( | ||
+ | -- org_venda_cliente | ||
+ | SELECT TOP 1 1 FROM org_venda_cliente OVC | ||
+ | WHERE | ||
+ | P.cd_org_venda = OVC.cd_org_venda | ||
+ | AND P.cd_cliente = OVC.cd_cliente | ||
+ | AND P.cd_vendedor = OVC.cd_vendedor | ||
+ | AND P.cd_tab_preco = OVC.cd_tab_preco | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | ( | ||
+ | P.origem = 'PEDIDO_APROVACAO' | ||
+ | AND EXISTS ( | ||
+ | -- parametros_cliente_prospect | ||
+ | SELECT TOP 1 1 FROM parametros_venda_prospect PCP | ||
+ | WHERE | ||
+ | P.cd_org_venda = PCP.cd_org_venda | ||
+ | AND P.cd_vendedor = PCP.cd_vendedor | ||
+ | AND P.cd_tab_preco = PCP.cd_tab_preco | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | |||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Script para criar um usuário com todos os acessos no EVO/NuPortal | ||
+ | |||
+ | <pre> | ||
+ | -- __ __ __ __ ___ __ | ||
+ | --/ _` / \ | \ | | /__` |__ |__) | ||
+ | --\__> \__/ |__/ \__/ .__/ |___ | \ | ||
+ | |||
+ | |||
+ | -- 1º utilize a base desejada e insira o nome da empresa em @nm_empresa | ||
+ | use bd_ssm_biodinamicajucianodev | ||
+ | DECLARE @nm_empresa VARCHAR(200) = 'biodinamicajucianodev' | ||
+ | |||
+ | -- 2º escolha um nome(novo ou já existente) para o perfil que terá acesso a tudo, este nome também será a senha para o portal EVO. | ||
+ | DECLARE @nm_new_perfil VARCHAR(100) = 'dog' | ||
+ | |||
+ | -- 3º Escolha um usuário da base escolhida que não exista na USUARIO_PERFIL através da query abaixo. | ||
+ | -- Observe que a consulta utiliza as variáveis acima para funcionar, então selecione-as ao executá-la. | ||
+ | SELECT DISTINCT (u.cd_usuario), ue.cd_tusuario, u.nome, u.login, u.email, u.senha, u.salt, u.dt_criacao, u.dt_validade, u.valido FROM bd_ssm_login..usuario u | ||
+ | INNER JOIN bd_ssm_login..usuario_empresa ue ON u.cd_usuario = ue.cd_usuario | ||
+ | INNER JOIN perfil_usuario pu ON pu.cd_usuario != u.cd_usuario | ||
+ | WHERE (ue.nm_empresa LIKE '%'+ @nm_empresa +'%' OR u.login LIKE '%'+ @nm_empresa +'%') | ||
+ | -- AND ue.papel = 2 | ||
+ | -- AND u.login like '%jbonatto%' | ||
+ | -- AND u.cd_usuario = 28607 | ||
+ | -- AND ue.cd_tusuario IN (170, 205) | ||
+ | |||
+ | --PAPÉIS: | ||
+ | --NENHUM(-1) | ||
+ | --SUPORTE(0) | ||
+ | --GESTOR(1) | ||
+ | --VENDEDOR(2) | ||
+ | --CLIENTE(3) | ||
+ | --BACKOFFICE(4) | ||
+ | --INTEGRADOR(5) | ||
+ | |||
+ | -- 5º Substitua NULL pelo bd_ssm_login..cd_usuario escolhido em @cdUsuario_dog. o Script só executará se a variável @cdUsuario_dog estiver diferente de NULL | ||
+ | DECLARE @cdUsuario_dog INT = NULL; | ||
+ | -- Porque dog? Dog invertido fica god, que dá o sentido de god user. | ||
+ | |||
+ | -- 6º Após os passos acima, verifique se as variáveis acima (@nm_empresa, @nm_new_perfil, @cdUsuario_dog) estão com os valores corretos. | ||
+ | |||
+ | -- 7º Execute todo este script. Se estiver no Microsoft SQL Server Management Studio apenas pressione F5. | ||
+ | -- Se tudo ocorrer bem você visualizará o usuário escolhido no último select resultante deste script. | ||
+ | |||
+ | -- Após executá-lo não pare o script, pois isso pode gerar um processo travado/bloqueado. | ||
+ | |||
+ | DECLARE @cd_perfil_already_exists INT = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil) | ||
+ | |||
+ | BEGIN TRANSACTION | ||
+ | BEGIN TRY | ||
+ | IF (@cdUsuario_dog IS NOT NULL | ||
+ | AND @nm_new_perfil IS NOT NULL | ||
+ | AND @nm_new_perfil <> '' | ||
+ | AND (SELECT DB_NAME()) = 'bd_ssm_' + @nm_empresa | ||
+ | AND NOT EXISTS (SELECT TOP 1 1 FROM PERFIL_USUARIO WHERE CD_USUARIO = @cdUsuario_dog) | ||
+ | ) | ||
+ | BEGIN | ||
+ | DECLARE @I INT = 1 | ||
+ | DECLARE @cdPerfilChoosed INT; | ||
+ | DECLARE @cdAcaoTemp INT; | ||
+ | |||
+ | --Decidindo o perfil a ser usado | ||
+ | IF(@cd_perfil_already_exists IS NULL) | ||
+ | BEGIN | ||
+ | INSERT INTO PERFIL( | ||
+ | CD_PERFIL, | ||
+ | NM_PERFIL | ||
+ | ) VALUES ( | ||
+ | (SELECT ISNULL((SELECT MAX(CD_PERFIL) FROM PERFIL), 1) + 1), | ||
+ | @nm_new_perfil | ||
+ | ) | ||
+ | SET @cdPerfilChoosed = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil) | ||
+ | END | ||
+ | ELSE | ||
+ | BEGIN | ||
+ | SET @cdPerfilChoosed = @cd_perfil_already_exists | ||
+ | END | ||
+ | |||
+ | --Vinculando usuário a um perfil | ||
+ | INSERT INTO PERFIL_USUARIO (CD_PERFIL, CD_USUARIO) | ||
+ | VALUES (@cdPerfilChoosed, @cdUsuario_dog) | ||
+ | |||
+ | --Inserindo ações para o perfil escolhido | ||
+ | |||
+ | DECLARE @acoes TABLE( | ||
+ | CD_RANK INT, | ||
+ | CD_ACAO INT | ||
+ | ) | ||
+ | |||
+ | ;WITH acoes AS( | ||
+ | SELECT | ||
+ | ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rk, | ||
+ | CD_ACAO | ||
+ | FROM BD_SSM_LOGIN..ACAO | ||
+ | WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO <> 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO' | ||
+ | ) INSERT INTO @acoes SELECT rk, CD_ACAO from acoes | ||
+ | |||
+ | DECLARE @LENGHT INT = (SELECT count(*) FROM BD_SSM_LOGIN..ACAO WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO <> 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO') | ||
+ | |||
+ | WHILE (@I < @LENGHT) | ||
+ | BEGIN | ||
+ | |||
+ | SET @cdAcaoTemp = (SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I) | ||
+ | |||
+ | IF NOT EXISTS ((SELECT TOP 1 1 FROM ACAO_PERFIL WHERE CD_PERFIL = @cdPerfilChoosed AND CD_ACAO = @cdAcaoTemp)) | ||
+ | BEGIN | ||
+ | INSERT INTO ACAO_PERFIL(CD_ACAO, CD_PERFIL) | ||
+ | VALUES ((SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I) , @cdPerfilChoosed) | ||
+ | END | ||
+ | SET @I += 1; | ||
+ | END | ||
+ | |||
+ | IF (SELECT salt FROM BD_SSM_LOGIN..USUARIO U where cd_usuario = @cdUsuario_dog) != 'PLAIN' | ||
+ | BEGIN | ||
+ | UPDATE bd_ssm_Login..usuario SET SALT = 'PLAIN', SENHA = @nm_new_perfil where cd_usuario = @cdUsuario_dog | ||
+ | END | ||
+ | SELECT 'Abaixo terá as informações de login EVO.' AS 'SEU GOD USER FOI CRIADO COM SUCESSO!' | ||
+ | SELECT u.LOGIN, u.SENHA, u.SALT, U.CD_USUARIO, UE.CD_TUSUARIO, p.NM_PERFIL, * FROM BD_SSM_LOGIN..USUARIO U | ||
+ | INNER JOIN bd_ssm_login..USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO | ||
+ | INNER JOIN PERFIL_USUARIO PU ON PU.CD_USUARIO = U.CD_USUARIO | ||
+ | INNER JOIN PERFIL P ON P.CD_PERFIL = PU.CD_PERFIL | ||
+ | WHERE u.CD_USUARIO = @cdUsuario_dog | ||
+ | END | ||
+ | ELSE | ||
+ | BEGIN | ||
+ | SELECT 'DADOS EQUIVOCADOS, BASE DIVERGENTE OU JÁ EXISTE ESTE USUÁRIO NA USUARIO_PERFIL' | ||
+ | END | ||
+ | COMMIT; | ||
+ | END TRY | ||
+ | BEGIN CATCH | ||
+ | SELECT 'ROLLBACK, WE HAVE A PROBLEM -> ' + ERROR_MESSAGE() | ||
+ | ROLLBACK | ||
+ | END CATCH | ||
+ | </pre> | ||
+ | |||
+ | * Script de auxílio para análise da aprovação de pendências no item do pedido | ||
+ | |||
+ | <pre> | ||
+ | --Script de auxílio para análise da aprovação de pendências no item do pedido | ||
+ | |||
+ | -- Preencha estas 2 variáveis | ||
+ | DECLARE @cdPedidoPalm BIGINT = 200729124209337, | ||
+ | @cdTUsuario INT = 168 | ||
+ | |||
+ | DECLARE @cdGestor INT = (SELECT cd_supervisor FROM supervisor WHERE cd_usuario = @cdTUsuario) | ||
+ | |||
+ | IF (@cdGestor IS NULL) | ||
+ | BEGIN | ||
+ | SELECT 'é necessário que o usuário seja um gestor/supervisor para aprovar pendências' | ||
+ | RETURN | ||
+ | END | ||
+ | --Caso você queira analisar o retorno ou a própria procedure que simula o click do botão aprovar pendências ela está logo abaixo: | ||
+ | --Analisando a procedure: | ||
+ | --Utilize sp_helptext com os resultados em modo Texto(CTRL + T) no lugar do EXEC para analisar a procedure. | ||
+ | --Ou melhor, vá em nome_da_sua_base --> Programação --> Procedimentos Armazenados | ||
+ | --> dbo.PR_AUTORIZAR_PENDENCIA | ||
+ | --> Botão direito Modificar | ||
+ | --> comente a linha que começa com Alter para não alterar a procedure sem querer | ||
+ | |||
+ | --Executando | ||
+ | --CUIDADO: O Script logo abaixo possui uma linha que executa uma procedure com comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes. | ||
+ | |||
+ | --INÍCIO | ||
+ | --DECLARE @pendenciaPedido TP_PENDENCIA_PEDIDO; | ||
+ | |||
+ | --INSERT INTO @pendenciaPedido ( | ||
+ | -- cd_pedido_palm, | ||
+ | -- cd_tipo_bloc, | ||
+ | -- cd_usuario, | ||
+ | -- cd_gestor | ||
+ | --) | ||
+ | --SELECT | ||
+ | -- @cdPedidoPalm, | ||
+ | -- tbpr.cd_tipo_bloc, | ||
+ | -- @cdTUsuario AS cd_usuario, | ||
+ | -- @cdGestor AS cd_gestor | ||
+ | --from PEDIDO P | ||
+ | --INNER JOIN tipo_bloc_pedido_rel tbpr WITH(NOLOCK) ON tbpr.cd_pedido_palm = P.cd_pedido_palm | ||
+ | --INNER JOIN tipo_bloc_pedido_sit tbps WITH (NOLOCK) ON tbps.cd_tipo_bloc = tbpr.cd_tipo_bloc | ||
+ | |||
+ | --CUIDADO_2: O Script logo abaixo possui comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes. | ||
+ | -- -- EXEC PR_AUTORIZAR_PENDENCIA @pendenciaPedido | ||
+ | |||
+ | --FIM | ||
+ | |||
+ | --PENDENCIAS_AUTORIZADAS(1) | ||
+ | --PEDIDO_AUTORIZADO(2) | ||
+ | --SEM_ALCADA_JULGAR_PENDENCIA(3) | ||
+ | --PENDENCIA_JA_JULGADA(4) | ||
+ | --PEDIDO_CANCELADO(5) | ||
+ | |||
+ | --Caso o número retornado não esteja entre estes acima é porque esta funcionalidade sofreu alteração, logo, parte deste script poderá não ser mais útil. | ||
+ | |||
+ | --Se você reconhecer que o retorno do NuPortal ou da Procedure for (3) 'SEM_ALCADA_JULGAR_PENDENCIA', você pode analisar o porquê deste retorno com as instruções abaixo: | ||
+ | |||
+ | --Analisando o porquê do retorno SEM_ALCADA_JULGAR_PENDENCIA(3) | ||
+ | |||
+ | DECLARE @nrItemPedido BIGINT = 3 | ||
+ | |||
+ | --Verificando se o usuário pode aprovar a pendência do item via função. Essa | ||
+ | --SELECT [dbo].[FN_AUTORIZA_ITEM_PEDIDO_PENDENTE] (@cdPedidoPalm, @nrItemPedido, @cdGestor) | ||
+ | |||
+ | --Conteúdo da função, se por ventura você não pode simplemente executá-la e/ou quer entender melhor o que está acontecendo nela | ||
+ | --Obs: Ele utiliza as variáveis declaradas lá em cima: | ||
+ | |||
+ | --INÍCIO | ||
+ | DECLARE @aprovavel CHAR(1) | ||
+ | SELECT | ||
+ | TMP.id_tipo_pedido, | ||
+ | CASE | ||
+ | WHEN TMP.id_tipo_pedido = 'BS' THEN | ||
+ | CASE WHEN | ||
+ | ( | ||
+ | (VPAPP.percentual_acrescimo_saldo <= VAP.pct_desc_original OR | ||
+ | (VPAPP.percentual_acrescimo_saldo IS NOT NULL AND VAP.pct_desc_original = 100) ) | ||
+ | AND ISNULL(VAP.pct_desc_min,0) <= VPAPP.percentual_acrescimo_saldo | ||
+ | ) | ||
+ | THEN 'S' ELSE 'N' END | ||
+ | WHEN TMP.id_tipo_pedido = 'BO' THEN | ||
+ | CASE WHEN | ||
+ | ((TMP.id_tipo_pedido = 'BO' AND VSV.nivel_supervisor = 0) OR NOT (ISNULL(IPD.id_autorizado, 'S') = 'N') | ||
+ | OR NOT (VPAPP.cd_pedido_palm_pai IS NOT NULL AND VPAPP.cd_pedido_palm_pai = VPAPP.cd_pedido_palm) | ||
+ | OR NOT (VPAPP.cd_pedido_palm IS NOT NULL AND VPAPP.cd_pedido_palm = P.cd_pedido_palm) | ||
+ | OR NOT (IPD.pr_desconto_aplicado IS NULL OR IPD.pr_desconto_aplicado = 0)) | ||
+ | THEN 'S' ELSE 'N' END | ||
+ | WHEN TMP.id_tipo_pedido <> 'BO' AND TMP.id_tipo_pedido <> 'BS' THEN | ||
+ | CASE WHEN | ||
+ | (IPD.pr_desconto_aplicado <= VAP.pct_desc OR AA.pct_desc = 100 ) | ||
+ | THEN 'S' ELSE 'N' END | ||
+ | END AS 'O usuário pode aprovar' | ||
+ | FROM pedido P WITH (NOLOCK) | ||
+ | INNER JOIN view_supervisor_vendedor VSV ON (P.cd_vendedor = VSV.cd_vendedor AND VSV.cd_supervisor = @cdGestor) | ||
+ | INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor WITH (NOLOCK)) V ON P.cd_vendedor = V.cd_vendedor | ||
+ | INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo, id_calcula_impostos FROM tipo_movimento_pedido WITH (NOLOCK)) TMP on (P.cd_tipo_pedido = TMP.cd_tipo) | ||
+ | INNER JOIN item_preco_tabela_desconto_aplicado IPD ON P.cd_pedido_palm = IPD.cd_pedido_palm AND IPD.nr_item_pedido = @nrItemPedido | ||
+ | INNER JOIN (SELECT | ||
+ | cd_pedido_palm, nr_item_pedido, id_autorizado,cd_produto | ||
+ | FROM item_pedido WITH (NOLOCK) ) I ON ((IPD.cd_pedido_palm = I.cd_pedido_palm) AND (IPD.nr_item_pedido = I.nr_item_pedido)) | ||
+ | INNER JOIN (SELECT cd_produto, nm_produto, ps_produto_kg, vr_max_pc_desconto FROM produto WITH (NOLOCK)) PR ON I.cd_produto = PR.cd_produto | ||
+ | |||
+ | -- verificar se o getor tem alçada de preço para aprovar o item pedido | ||
+ | INNER JOIN usuario_alcada UA ON VSV.cd_supervisor = UA.cd_usuario | ||
+ | INNER JOIN alcada_autorizacao AA ON UA.cd_alcada = AA.cd_alcada | ||
+ | INNER JOIN view_alcada_produto VAP ON (IPD.cd_produto = VAP.cd_produto AND VAP.cd_alcada = AA.cd_alcada) | ||
+ | |||
+ | -- verificar se o getor tem alçada de pendencia para aprovar o item pedido | ||
+ | INNER JOIN (SELECT cd_pedido_palm, nr_item_pedido, cd_tipo_bloc, id_status FROM item_pedido_pendente WITH(NOLOCK)) IPP ON IPD.cd_pedido_palm = IPP.cd_pedido_palm AND IPD.nr_item_pedido = IPP.nr_item_pedido AND ISNULL(IPP.ID_STATUS, 'S') = 'P' | ||
+ | INNER JOIN alcada_tipo_bloc ATB WITH(NOLOCK) ON IPP.cd_tipo_bloc = ATB.cd_tipo_bloc | ||
+ | INNER JOIN usuario_alcada_aprovacao UAA WITH(NOLOCK) ON UAA.cd_alcada = ATB.cd_alcada AND IPP.cd_tipo_bloc = ATB.CD_TIPO_BLOC AND UAA.cd_usuario = (SELECT cd_usuario FROM supervisor WHERE cd_supervisor = @cdGestor) | ||
+ | |||
+ | LEFT JOIN view_percentual_acrescimo_pedido_pai VPAPP WITH (NOLOCK) ON P.cd_pedido_palm = VPAPP.cd_pedido_palm | ||
+ | |||
+ | WHERE | ||
+ | ISNULL(P.id_efetivado, 'S') = 'S' | ||
+ | AND ((ISNULL(P.id_autorizado, 'S') = 'N') OR TMP.id_tipo_pedido = 'BS') | ||
+ | AND (ISNULL(IPD.id_autorizado, 'S') = 'N') | ||
+ | AND (@cdPedidoPalm IS NULL OR P.cd_pedido_palm = @cdPedidoPalm) | ||
+ | |||
+ | SELECT @aprovavel | ||
+ | --FIM | ||
+ | </pre> | ||
+ | |||
+ | * Limpar base pesada para teste | ||
+ | |||
+ | <pre> | ||
+ | DBCC SHRINKDATABASE('bd_ssm_makitarenatolima', 0) | ||
+ | |||
+ | SELECT 'TRUNCATE TABLE ' + name FROM sys.tables where name like 'LOG_%' and | ||
+ | name not in ('LOG_IMPORTACAO', 'LOG_GPS', 'LOG_ID', 'LOG_CLOUD_SERVER', 'LOG_SERVER_CLOUD', | ||
+ | 'LOG_ACAO', 'LOG_PEDIDO_AUTO') | ||
+ | </pre> | ||
+ | |||
+ | * Verificar a quantidade de dados sujos nas bases | ||
+ | <pre> | ||
+ | select 'SELECT COUNT(*), '''+ name + ''' FROM '+ name + ' WITH (NOLOCK) where data_delete is not null UNION ALL' from sys.tables | ||
+ | where | ||
+ | name like '%_001' | ||
+ | order by name asc; | ||
+ | </pre> | ||
+ | |||
+ | * PEGAR OS USUARIOS DE UMA BASE DE PRODUÇÃO E CADASTRAR UMA CÓPIA DELES PARA UMA BASE DE BACKUP MANTENDO TODAS AS CONFIGURAÇÕES | ||
+ | |||
+ | <pre> | ||
+ | use bd_ssm_login; | ||
+ | |||
+ | select ue.* from bd_ssm_login..usuario_empresa ue | ||
+ | inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%' | ||
+ | select u.CD_USUARIO from bd_ssm_login..usuario_empresa ue | ||
+ | inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%' | ||
+ | |||
+ | select pu.*, ue.*, CAST(u.CD_USUARIO AS VARCHAR(10)) + '-' + NM_EMPRESA from bd_ssm_login..usuario_empresa ue | ||
+ | inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario | ||
+ | inner join bd_ssm_montanahomologmobile..perfil_usuario pu on u.CD_USUARIO = pu.cd_usuario | ||
+ | where nm_empresa like '%montana'; | ||
+ | go | ||
+ | |||
+ | INSERT INTO USUARIO | ||
+ | SELECT /*u.CD_USUARIO,*/u.NOME,u.LOGIN + 'homo',u.EMAIL,u.SENHA,u.SALT,u.TELEFONE,u.CD_USUARIO,u.VALIDO,u.DT_VALIDADE,u.DT_CRIACAO,u.URL_FOTO,u.DELTA_ITERACOES from bd_ssm_login..usuario_empresa ue | ||
+ | inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like 'montana' -- numero_violações | ||
+ | |||
+ | INSERT INTO USUARIO_EMPRESA | ||
+ | select u.CD_USUARIO, ue.CD_TUSUARIO,ue.NM_EMPRESA + 'homologmobile',ue.VALIDO,ue.DT_VALIDADE,ue.DT_CRIACAO,ue.PAPEL | ||
+ | from bd_ssm_login..usuario_empresa ue | ||
+ | inner join bd_ssm_login..usuario u on ue.cd_usuario = u.NUMERO_VIOLACOES where nm_empresa like 'montana' | ||
+ | |||
+ | UPDATE bd_ssm_montanahomologmobile..PERFIL_USUARIO | ||
+ | SET | ||
+ | bd_ssm_montanahomologmobile..PERFIL_USUARIO.CD_USUARIO = U.CD_USUARIO | ||
+ | FROM | ||
+ | USUARIO AS U | ||
+ | INNER JOIN bd_ssm_montanahomologmobile..PERFIL_USUARIO AS PU | ||
+ | ON U.NUMERO_VIOLACOES = PU.CD_USUARIO | ||
+ | |||
+ | SELECT * FROM bd_ssm_montanahomologmobile..PERFIL_USUARIO PU | ||
+ | INNER JOIN USUARIO U ON U.NUMERO_VIOLACOES = PU.CD_USUARIO | ||
+ | |||
+ | select ue.*, u.* from bd_ssm_login..usuario_empresa ue | ||
+ | inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%' | ||
+ | |||
+ | UPDATE USUARIO SET SENHA = 'GILGAMESH', SALT = 'PLAIN' | ||
+ | where CD_USUARIO = 12780 | ||
+ | |||
+ | UPDATE USUARIO SET SENHA = '06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4=', SALT = 'c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6' | ||
+ | where CD_USUARIO = 12780 | ||
+ | -- 06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4= c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6 | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | * Verifiar duplicações de vinculações de cadastros nas bases | ||
+ | <pre> | ||
+ | |||
+ | --VER SE EXISTE UM USUÁRIO VINCULADO A MAIS DE UM REGISTRO | ||
+ | select count(*), tu.cd_usuario from tusuario tu | ||
+ | left join DADOS_VENDEDOR dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO | ||
+ | left join SUPERVISOR s on S.CD_USUARIO = tu.CD_USUARIO | ||
+ | where tu.CD_SITUACAO not in (2) | ||
+ | group by tu.cd_usuario | ||
+ | ORDER BY 1 DESC | ||
+ | |||
+ | --VER SE EXISTEM USUARIOS COM MESMO LOGIN | ||
+ | select count(*), tu.NM_GUERRA from tusuario tu | ||
+ | where tu.CD_SITUACAO not in (2) | ||
+ | group by tu.NM_GUERRA | ||
+ | ORDER BY 1 DESC | ||
+ | |||
+ | --VER SE EXISTEM USUARIOS COM MESMO CÓDIGO | ||
+ | select count(*), tu.CD_USUARIO from tusuario tu | ||
+ | where tu.CD_SITUACAO not in (2) | ||
+ | group by tu.CD_USUARIO | ||
+ | ORDER BY 1 DESC | ||
</pre> | </pre> |
Edição atual tal como às 15h09min de 7 de junho de 2021
- Comando pra saber se uma porta está em uso no windows
netstat -ano | find ":Required port number netstat -ano | find "25"
- Cadastro de empresa
use bd_ssm_adm; exec sp_cadastra_empresa 'softsite2numobile', '25', 0, 3 exec CADASTRAR_BASE 'softsite2numobile', 'ANDERSON GOMES', 100
- 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 DBCC inputbuffer(252)
- Detalhar qual processo está rodando a partir de uma execução inicial
DECLARE @Handle varbinary(64); SELECT @Handle = sql_handle FROM sys.dm_exec_requests WHERE session_id = 13933 and request_id = 0; SELECT * FROM ::fn_get_sql(@Handle);
- Ver a query que está sendo executada por um processo (Parâmetro spid)
DBCC INPUTBUFFER(6001)
- Saber quais as bases estão vencidas que procedure vai apagar
USE bd_ssm_adm; SELECT s.name, ub.DATA_EXPIRACAO FROM sys.sysdatabases s LEFT JOIN USUARIO_BASE ub ON s.name = ub.nm_base WHERE s.name LIKE 'bd_ssm_%' AND s.name NOT LIKE 'bd_ssm_adm' AND (ub.nm_base IS NULL OR ub.DATA_EXPIRACAO < GETDATE()) ORDER BY crdate ASC
- Listar dados de todas as bases dinamicamente numa consulta só usando union all
select 'SELECT ''' + name + ''' ,* from '+name+'..INTERFACEERPCONFIGURACAOPARAMETRO UNION ALL' from sys.databases where name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' and name not like '%adm%' and name not like '%login%' and name not like '%cpf%' and name not like '%expressa%' and name not like '%makitahomolog%' and name not like '%prodentho_2%' order by name asc;
select 'SELECT ''' + name + ''' , COUNT(*) from '+name+'..CLIENTE_COORD_LOG WHERE CAST(DT_LOG AS DATE) >= ''2019-11-19'' AND CAST(DT_LOG AS DATE) <= ''2019-11-19'' UNION ALL' from sys.databases where name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' and name not like '%adm%' and name not like '%login%' and name not like '%cpf%' order by name asc;
- Pegar usuarios de uma empresa x
select * from bd_ssm_login..usuario_empresa ue inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%colchobel%'
- Pegar os dados de login de um usuario no evo
select u.login as LOGIN, u.SENHA AS SENHA, CASE ue.PAPEL WHEN -1 THEN 'NENHUM' WHEN 0 THEN 'SUPORTE' WHEN 1 THEN 'GESTOR' WHEN 2 THEN 'VENDEDOR' WHEN 3 THEN 'CLIENTE' WHEN 4 THEN 'BACKOFFICE' WHEN 5 THEN 'INTEGRADOR' END AS PAPEL, dv.CD_VENDEDOR AS CD_VENDEDOR, s.CD_SUPERVISOR AS CD_SUPERVISOR FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO left join tusuario tu on tu.CD_USUARIO = ue.CD_TUSUARIO left join dados_vendedor dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO left join supervisor s on s.CD_USUARIO = tu.CD_USUARIO WHERE nm_empresa = 'biodinamicanumobile' GO select u.*, ue.* FROM bd_ssm_login..USUARIO_EMPRESA ue inner join bd_ssm_login..usuario u on u.CD_USUARIO = ue.CD_USUARIO WHERE nm_empresa = 'biodinamicanumobile' GO
- Checar qual versão determinado vendedor tá usando
select cd_usuario, substring(ds_log, CHARINDEX('@', ds_log) + 1, charindex(':', ds_log, CHARINDEX('@', ds_log) + 1) - CHARINDEX('@', ds_log) - 1) from LOG_SINCRONISMO with(nolock) order by 2
- 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
- Descobrir exatamente qual script está sendo executado no momento dado um processo qualquer quando existem mais de um script sendo executado
em background para o spid passado
DECLARE @comandoSQL VARCHAR(8000) DECLARE @tableComandoSQL TABLE (comando VARCHAR(8000)) --SET @comandoSQL = (SELECT CAST([TEXT] AS VARCHAR(8000)) --FROM ::fn_get_sql((SELECT [sql_handle] FROM sysprocesses where spid = 1071))) --select @comandoSQL INSERT INTO @tableComandoSQL SELECT CAST([TEXT] AS VARCHAR(8000)) FROM ::fn_get_sql((SELECT top 1 [sql_handle] FROM sys.sysprocesses where spid = 1071)) SELECT * FROM @tableComandoSQL
- Ver o tamanho das tabelas
SELECT OBJECT_NAME(object_id) As Tabela, Rows As Linhas, SUM(Total_Pages * 8) As Reservado, SUM(CASE WHEN Index_ID > 1 THEN 0 ELSE Data_Pages * 8 END) As Dados, SUM(Used_Pages * 8) - SUM(CASE WHEN Index_ID > 1 THEN 0 ELSE Data_Pages * 8 END) As Indice, SUM((Total_Pages - Used_Pages) * 8) As NaoUtilizado FROM sys.partitions As P INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id GROUP BY OBJECT_NAME(object_id), Rows ORDER BY DADOS DESC
- 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
select * from sys.sysobjects where name = 'FK__LISTA_PRO__CD_SE__361203C5' SELECT * FROM sys.sysobjects where ID = 907150277 ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
ALTER TABLE ITEM_PEDIDO_EXCLUIDO DROP CONSTRAINT FK_SAV_ITEM__PEDIDO_PEDIDO_DEL;
- Remover Foreign Keys Dinamicamente
SELECT DISTINCT 'ALTER TABLE ' + KCU1.TABLE_NAME + ' DROP CONSTRAINT ' + KCU1.CONSTRAINT_NAME 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
- 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
- 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
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 COLLATE SQL_Latin1_General_CP1_CI_AS) INNER JOIN sys.databases SBD ON (SBD.name = EB.DS_DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS) WHERE state_desc = 'OFFLINE'
- Tabelas que tem que ser analisadas
EMPRESA_SYNC_SISTEMA EMPRESA_SYNC_BD EMPRESA_SISTEMA EMPRESA_BD EMPRESA
- Deletes necessários para limpar as bases
Na base ADM: select * from empresa order by nm_empresa asc
use bd_ssm_adm; SELECT * FROM EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog' --619 DELETE FROM EMPRESA_SYNC_BD WHERE CD_EMPRESA IN (619) DELETE FROM EMPRESA_BD WHERE CD_EMPRESA IN (619) DELETE FROM EMPRESA_SYNC_SISTEMA WHERE CD_EMPRESA IN (619) DELETE FROM EMPRESA_SISTEMA WHERE CD_EMPRESA IN (619) DELETE FROM EMPRESA WHERE CD_EMPRESA IN (619) USE bd_ssm_login; SELECT * FROM bd_ssm_login..USUARIO_EMPRESA WHERE NM_EMPRESA LIKE 'fiorehomolog' DELETE FROM MODULO_EMPRESA WHERE CD_EMPRESA IN (619) DELETE FROM USUARIO WHERE CD_USUARIO IN (1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157) DELETE FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'fiorehomolog'
- 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)
- 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%'
select ' disable trigger ' + tr.name + ' on ' + tb.name, st.is_disabled from sys.sysobjects tr inner join sys.sysobjects tb on tr.parent_obj = tb.id and tb.xtype = 'U' inner join sys.triggers st on st.object_id = tr.id where tr.xtype = 'tr' and st.is_disabled = 1 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')
- Listar algo em todas as bases numa consulta só
select 'select ''' + name + ''', * from ' + name + '.dbo.INTERFACEERPCONFIGURACAOPARAMETRO where VR_PARAMETRO NOT LIKE ''%PEDIDO%ITEM_PEDIDO%'' UNION ALL' from sys.databases where name like 'bd_ssm_%' and state_desc <> 'OFFLINE' and (name not like '%pronta%' AND name not like 'bd_ssm_adm')
- Descobrindo as empresas que importam
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')
- UPDATE para atualizar dados duplicados da tabela 001
UPDATE LISTA_PRODUTO_001 SET data_delete = data_insert+('00:00:00.200') where id in ( -2146273629, -2146273628, -2146273627, -2146273626, -2146273625, -2146273624, -2146273623, -2146273622, -2146273621)
- Comando para concatenar dentro do group by
STUFF SELECT NM_ESTADO, NM_CIDADE, STUFF( (SELECT DISTINCT ',' + NM_FANTASIA FROM cliente WHERE NM_ESTADO = a.NM_ESTADO AND NM_CIDADE = a.NM_CIDADE FOR XML PATH ('')) , 1, 1, '') AS URLList FROM cliente AS a WHERE NM_ESTADO = 'CE' AND NM_CIDADE = 'fortaleza' GROUP BY NM_ESTADO, NM_CIDADE
- Template base pra criar o script de uma tabela NOVA pro TJ
/* Criar a tabela TMP pra empresas que utilizam import */ CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_TMP] ( CD_LOTE int NOT NULL, CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, CD_TAB_PRECO INT NOT NULL, PR_DESCONTO DECIMAL(18, 6) NOT NULL, CONSTRAINT [PK_DESCONTO_LOTE_OV_TP_TMP] PRIMARY KEY CLUSTERED ( [CD_LOTE] ASC, [CD_ORG_VENDA] ASC, [CD_TAB_PRECO] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] /* Criar a tabela de LOG */ CREATE TABLE LOG_DESCONTO_LOTE_OV_TP ( CD_LOG INT IDENTITY PRIMARY KEY ,DT_LOG DATETIME NOT NULL ,TP_OPERACAO VARCHAR(1) NOT NULL ,ID_KEY VARCHAR(200) NOT NULL ,CD_LOTE int ,CD_ORG_VENDA VARCHAR(20) ,CD_TAB_PRECO INT) /* Criar tabela 001 seguindo o padrão */ CREATE TABLE [dbo].[DESCONTO_LOTE_OV_TP_001] ( [id] [int] IDENTITY(-2147483648,1) NOT NULL, CD_LOTE INT NOT NULL, CD_ORG_VENDA VARCHAR(20) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL, CD_TAB_PRECO INT NOT NULL, PR_DESCONTO DECIMAL(18, 6) NOT NULL, [data_insert] [datetime] NOT NULL, [data_update] [datetime] NULL, [data_delete] [datetime] NULL, PRIMARY KEY NONCLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] /* Adicionar Index */ CREATE CLUSTERED INDEX PK_DESCONTO_LOTE_OV_TP ON DESCONTO_LOTE_OV_TP_001 (CD_LOTE ASC, CD_ORG_VENDA ASC, CD_TAB_PRECO ASC) /* Adicionar constraint */ ALTER TABLE [dbo].[DESCONTO_LOTE_OV_TP_001] ADD CONSTRAINT [DF_DATA_INSERCAO_DESCONTO] DEFAULT (getdate()) FOR [data_insert] /* Criar trigger na tabela nova adicionando os campos necessários */ CREATE TRIGGER [dbo].[TR_TJ_UPDATE_DESCONTO_LOTE_OV_TP] ON [dbo].[DESCONTO_LOTE_OV_TP_001] instead OF UPDATE AS BEGIN SET nocount ON; UPDATE t SET t.data_update = case when s.data_delete is null then Getdate() else t.data_update end , T.CD_LOTE = S.CD_LOTE, T.CD_ORG_VENDA = S.CD_ORG_VENDA, T.CD_TAB_PRECO = S.CD_TAB_PRECO, T.PR_DESCONTO = S.PR_DESCONTO, t.data_delete = s.data_delete FROM DESCONTO_LOTE_OV_TP_001 t INNER JOIN inserted s ON ( t.id = s.id ) END /* Criar a view TJ */ CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP_TJ] AS SELECT id, CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO FROM DESCONTO_LOTE_OV_TP_001 WHERE data_delete IS NULL /* Criar Trigger da view */ CREATE TRIGGER [dbo].[TR_TJ_DELETE_DESCONTO_LOTE_OV_TP] ON [dbo].[DESCONTO_LOTE_OV_TP_TJ] instead OF DELETE AS BEGIN SET nocount ON; UPDATE t SET data_delete = Getdate() FROM deleted s INNER JOIN DESCONTO_LOTE_OV_TP_001 t ON s.id = t.id END /* Criar a view */ CREATE VIEW [dbo].[DESCONTO_LOTE_OV_TP] AS SELECT CD_LOTE, CD_ORG_VENDA, CD_TAB_PRECO, PR_DESCONTO FROM DESCONTO_LOTE_OV_TP_tj /* Criar a função de navegação */ CREATE FUNCTION fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP(@ID_VENDEDOR INT, @DT_LAST_SINC DATETIME) RETURNS TABLE AS RETURN (SELECT DLOT.id, DLOT.CD_LOTE, DLOT.CD_ORG_VENDA, DLOT.CD_TAB_PRECO, DLOT.PR_DESCONTO, DLOT.DATA_DELETE FROM DESCONTO_LOTE_OV_TP_001 DLOT WHERE ( ( ( ( DLOT.DATA_INSERT >= @DT_LAST_SINC OR DLOT.DATA_UPDATE >= @DT_LAST_SINC ) AND DLOT.DATA_DELETE IS NULL ) OR ( DLOT.DATA_DELETE >= @DT_LAST_SINC AND DLOT.DATA_INSERT < @DT_LAST_SINC AND NOT EXISTS(SELECT 1 FROM DESCONTO_LOTE_OV_TP_001 T WHERE DLOT.CD_LOTE = T.CD_LOTE AND DLOT.CD_ORG_VENDA = T.CD_ORG_VENDA AND DLOT.CD_TAB_PRECO = T.CD_TAB_PRECO AND T.DATA_DELETE IS NULL ) ) OR ( @DT_LAST_SINC IS NULL AND DLOT.DATA_DELETE IS NULL ) ) ) ) /* Adicionando a função na tabela */ INSERT INTO TAMOJUNTO_TABELA_FUNCAO (NM_TABLE, NM_FN, FL_ATIVA) VALUES ('DESCONTO_LOTE_OV_TP', 'fn_REGISTRO_SYNC_DESCONTO_LOTE_OV_TP', 1)
- Consulta para retornar os 20 processos que estão consumindo mais recursos de cpu no momento
SELECT TOP 20 GETDATE() AS 'Collection Date', qs.execution_count AS 'Execution Count', SUBSTRING(qt.text,qs.statement_start_offset/2 +1, (CASE WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 ) AS 'Query Text', DB_NAME(qt.dbid) AS 'DB Name', qs.total_worker_time AS 'Total CPU Time', qs.total_worker_time/qs.execution_count AS 'Avg CPU Time (ms)', qs.total_physical_reads AS 'Total Physical Reads', qs.total_physical_reads/qs.execution_count AS 'Avg Physical Reads', qs.total_logical_reads AS 'Total Logical Reads', qs.total_logical_reads/qs.execution_count AS 'Avg Logical Reads', qs.total_logical_writes AS 'Total Logical Writes', qs.total_logical_writes/qs.execution_count AS 'Avg Logical Writes', qs.total_elapsed_time AS 'Total Duration', qs.total_elapsed_time/qs.execution_count AS 'Avg Duration (ms)', qp.query_plan AS 'Plan' FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp WHERE qs.execution_count > 50 OR qs.total_worker_time/qs.execution_count > 100 OR qs.total_physical_reads/qs.execution_count > 1000 OR qs.total_logical_reads/qs.execution_count > 1000 OR qs.total_logical_writes/qs.execution_count > 1000 OR qs.total_elapsed_time/qs.execution_count > 1000 ORDER BY qs.execution_count DESC, qs.total_elapsed_time/qs.execution_count DESC, qs.total_worker_time/qs.execution_count DESC, qs.total_physical_reads/qs.execution_count DESC, qs.total_logical_reads/qs.execution_count DESC, qs.total_logical_writes/qs.execution_count DESC GO
- Consulta para ver se uma trigger está habilitada
select ObjectProperty(Object_id(Name),'ExecIsTriggerDisabled') STATUS from sys.sysobjects where name = 'LOG_ALTERACAO_DELETE_PRODUTO_ESTOQUE'
- Checar se um campo existe em uma tabela
SELECT T.name AS Tabela, C.name AS Coluna FROM sys.sysobjects AS T (NOLOCK) INNER JOIN sys.all_columns AS C (NOLOCK) ON T.id = C.object_id AND T.XTYPE = 'U' WHERE C.NAME LIKE '%CAMPO%' ORDER BY T.name ASC
- Alterar os paths de dados de importação da modelo para o nome da empresa cadastrada
USE bd_ssm_jptripas DECLARE @empresa varchar(50); SET @empresa = 'jptripas'; UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO' UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao\backup' WHERE DS_CHAVE='DS_PATH_ARQS_EXPORTACAO_BKP' UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE DS_CHAVE='DS_PATH_ARQS_IMPORTACAO' UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE DS_CHAVE='DS_PATH_DESCRIBER' UPDATE CONFIGURACAO SET DS_VALOR = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE DS_CHAVE='DS_PATH_DIRS_VERSOES' UPDATE CONFIGURACOES SET DS_PATH_ARQS_IMPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1 UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO = 'C:\Sistema\SSM\publico\'+@empresa+'\exportacao' WHERE CD_CONFIGURACAO=1 UPDATE CONFIGURACOES SET DS_PATH_ARQS_EXPORTACAO_BKP= 'C:\Sistema\SSM\publico\'+@empresa+'\importacao' WHERE CD_CONFIGURACAO=1 UPDATE CONFIGURACOES SET DS_PATH_DESCRIBER = 'C:\Sistema\SSM\publico\'+@empresa+'\describer' WHERE CD_CONFIGURACAO=1 UPDATE CONFIGURACOES SET DS_PATH_DIRS_VERSOES = 'C:\Sistema\SSM\publico\'+@empresa+'\versao' WHERE CD_CONFIGURACAO=1
- Script para análise de que se existe a tabela no tamojunto para inserir
select ' USE ' + name + '; IF(((SELECT COUNT(*) FROM tamojunto_tabela_funcao WHERE NM_TABLE = ''CLIENTE'') = 0) AND (EXISTS (SELECT TOP 1 1 FROM sys.objects WHERE NAME = ''CLIENTE_001''))) BEGIN INSERT INTO tamojunto_tabela_funcao VALUES (''CLIENTE'', ''fn_REGISTRO_SYNC_CLIENTE'', 1) END' from sys.databases where name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' and name not like '%adm%' and name not like '%protheus%' and name not like '%login%' order by name asc;
- Script para contar quantas licenças uma empresa tem.
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( NM_EMPRESA VARCHAR(50), NR_LICENCAS INT, NR_LICENCAS_PORTAL INT, NR_USUARIOS_SOMENTE_PORTAL INT, NR_USUARIOS_SOMENTE_MOBILE INT, NR_USUARIOS_PORTAL_MOBILE INT, NR_USUARIOS_PORTAL_MOBILE_UNICO INT, NR_USUARIOS_TOTAL INT) DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), @NrUsuariosSomentePortal INT, @NrUsuariosSomenteMobile INT, @NrUsuariosPortalMobile INT, @NrUsuariosPortalMobileUnico INT; SELECT @NmEmpresa = 'makita', @NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'), @NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_makita'), @NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL), @NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)), @NrUsuariosPortalMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_makita..TUSUARIO T INNER JOIN bd_ssm_makita..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL), @NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_makita..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL AND ID_PALM IS NOT NULL); INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobile, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobile + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal)); SELECT * FROM @VisaoLicencasUsuariosPorEmpresa;
- Código que deve ser executado quando se restaurar uma base de produção em homologação.
UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/supervisor/gerencial/getRelatorioGerencial/' WHERE DS_CHAVE = 'DS_URL_REL_GERENCIAL' UPDATE CONFIGURACAO SET DS_VALOR = 'http://homologacao.geosalesmobile.com/super/services/WebService' WHERE DS_CHAVE = 'DS_URL_SERVICE' UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'GPS_BASE_URL' UPDATE CONFIGURACAO SET DS_VALOR = 'http://sync.geosalesmobile.com:8184/ssmservices' WHERE DS_CHAVE = 'URL_WEBSERVICE'
- Shrink
DBCC SHRINKDATABASE('bd_ssm_campneus', 0)
- Controle de licenças
SELECT program_name, HOSTNAME, * FROM sys.sysprocesses where program_name = 'passwordsenderws'
INSERT INTO empresa_bd_properties SELECT CD_EMPRESA, 'passwordsenderws', NULL, 2 FROM EMPRESA
- Verificar processo de importação
select db_name(dbid), * from sys.sysprocesses where program_name like '%Import%' and db_name(dbid) = 'bd_ssm_boreda'
- Analisar base que está dando erro no claudus
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD WHERE ID_STATUS_DEL = ''F'' UNION ALL' from sys.databases where name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' and name not like '%adm%' and name not like '%login%' order by name asc;
SELECT A.NAME, A.TYPE, B.TEXT FROM SYSOBJECTS A (nolock) JOIN SYSCOMMENTS B (nolock) ON A.ID = B.ID WHERE B.TEXT LIKE '%ITEM_PEDIDO%' --- Informação a ser procurada no corpo da procedure, funcao ou view AND B.TEXT LIKE '%LOG_ALTERACAO_USUARIO%' AND B.TEXT LIKE '%''D''%' AND A.TYPE = 'TR' --- Tipo de objeto a ser localizado no caso procedure ORDER BY A.NAME
- Pesquisar texto dentro das estruturas do banco
DECLARE @Search varchar(255) SET @Search='EXCLUINDO REGISTROS NÃO SINCRONIZADOS' SELECT DISTINCT o.name AS Object_Name,o.type_desc FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id=o.object_id WHERE m.definition Like '%'+@Search+'%' ORDER BY 2,1
- Verificar falhas no claudus em todas as bases
select 'SELECT ''' + name + ''' ,* from '+name+'..LOG_SERVER_CLOUD WHERE ID_STATUS_DEL = ''F'' OR ID_STATUS_INS = ''F'' UNION ALL' from sys.databases where name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' and name not like '%adm%' and name not like '%login%' order by name asc;
- Analisar vínculos de frete
select * from CLIENTE where nm_cliente like '%POLO DISTR%' SELECT * FROM APLICACAO_FRETE; SELECT CD_CLASSE_FRETE, * FROM PRODUTO WHERE CD_PRODUTO = 12951 SELECT * FROM FAIXA_PRECO_FRETE WHERE CD_CLASSE_FRETE = 0 and CD_FRETE in (13527306, 23527306, 33527306) select * from PRACA where CD_PRACA = 3527306 select * from CLIENTE_PRACA where CD_CLIENTE = 100669301 --3527306 select* from FRETE where CD_PRACA = 3527306
UPDATE TAMOJUNTO_TABELA_FUNCAO SET FL_ATIVA = 1 WHERE FL_ATIVA = 0 AND NM_TABLE NOT IN ('DESCO_GRUP_CLIEN_FAMIL', 'TIPO_PRODUTO_MOVIMENTO')
- Aprovar pedidos manualmente.
SELECT 'EXEC autorizar_item_pedido_super ' + CAST(IP.CD_PEDIDO_PALM AS VARCHAR(20)) + ', ' + CAST(IP.NR_ITEM_PEDIDO AS VARCHAR(20)) + ', ' + CAST(IP.CD_PRODUTO AS VARCHAR(15)) + ', NULL, ''S'', 14 ' FROM ITEM_PEDIDO IP WHERE CD_PEDIDO_PALM IN (190302065635151583) SELECT 'EXEC autorizar_pedido_super ' + CAST(P.CD_PEDIDO_PALM AS VARCHAR(20)) + ', 14, 0 ' FROM PEDIDO P WHERE CD_PEDIDO_PALM IN (190302065635151583)
- Contagem de licenças
DECLARE @VisaoLicencasUsuariosPorEmpresa TABLE ( NM_EMPRESA VARCHAR(50), NR_LICENCAS INT, NR_LICENCAS_PORTAL INT, NR_USUARIOS_SOMENTE_PORTAL INT, NR_USUARIOS_SOMENTE_PORTAL_BLOQUEADOS INT, NR_USUARIOS_SOMENTE_MOBILE INT, NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM INT, NR_USUARIOS_PORTAL_MOBILE_COM_ID_PALM_BLOQUEADO INT, NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM INT, NR_USUARIOS_PORTAL_MOBILE_SEM_ID_PALM_BLOQUEADO INT, NR_USUARIOS_PORTAL_MOBILE_UNICO INT, NR_USUARIOS_TOTAL INT, NR_USUARIOS_DESATIVADOS INT, NR_USUARIOS_BLOQUEADOS_TOTAL INT) DECLARE @NrLicencas INT, @NrLicencasPortal INT, @NmEmpresa VARCHAR(50), @NrUsuariosSomentePortal INT, @NrUsuariosSomentePortalBloqueado INT, @NrUsuariosSomenteMobile INT, @NrUsuariosPortalMobileComIdPalm INT, @NrUsuariosPortalMobileComIdPalmBloqueado INT, @NrUsuariosPortalMobileSemIdPalm INT, @NrUsuariosPortalMobileSemIdPalmBloqueado INT, @NrUsuariosPortalMobileUnico INT, @NrUsuariosPortalDesativados INT, @NrUsuariosPortalBloqueados INT; SELECT @NmEmpresa = 'camil', @NrLicencas = (SELECT TOP 1 ISNULL(ES.NR_LICENCAS, 0) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'), @NrLicencasPortal = (SELECT TOP 1 CAST(ISNULL(ES.NR_LICENCAS_PORTAL, 0) AS VARCHAR(10)) FROM bd_ssm_adm..EMPRESA_BD EB INNER JOIN bd_ssm_adm..EMPRESA_SISTEMA ES ON EB.CD_EMPRESA = ES.CD_EMPRESA WHERE EB.DS_DATABASE = 'bd_ssm_camil'), @NrUsuariosSomenteMobile = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..DADOS_VENDEDOR WHERE ID_PALM IS NOT NULL AND CD_USUARIO_SEGURANCA IS NULL), @NrUsuariosSomentePortal = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO <> 2 AND CD_SITUACAO <> 9 AND (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)), @NrUsuariosSomentePortalBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO WHERE CD_SITUACAO <> 2 AND CD_SITUACAO = 9 AND (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND CD_USUARIO NOT IN (SELECT DISTINCT CD_USUARIO_SEGURANCA FROM bd_ssm_camil..DADOS_VENDEDOR WHERE CD_USUARIO_SEGURANCA IS NOT NULL)), @NrUsuariosPortalMobileComIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO <> 9), @NrUsuariosPortalMobileComIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NOT NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO = 9), @NrUsuariosPortalMobileSemIdPalm = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO <> 9 ), @NrUsuariosPortalMobileSemIdPalmBloqueado = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T INNER JOIN bd_ssm_camil..DADOS_VENDEDOR DV ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE (ID_USER_SOFTSITE <> 'S' OR ID_USER_SOFTSITE IS NULL) AND ID_PALM IS NULL AND T.CD_SITUACAO <> 2 AND T.CD_SITUACAO = 9), @NrUsuariosPortalMobileUnico = (SELECT ISNULL(COUNT(DISTINCT DV.CD_USUARIO_SEGURANCA), 0) FROM bd_ssm_camil..DADOS_VENDEDOR DV INNER JOIN TUSUARIO T ON T.CD_USUARIO = DV.CD_USUARIO_SEGURANCA WHERE DV.ID_PALM IS NOT NULL AND T.CD_SITUACAO <> 2), @NrUsuariosPortalDesativados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 2), @NrUsuariosPortalBloqueados = (SELECT ISNULL(COUNT(*), 0) FROM bd_ssm_camil..TUSUARIO T WHERE T.CD_SITUACAO = 9); INSERT INTO @VisaoLicencasUsuariosPorEmpresa VALUES (@NmEmpresa, @NrLicencas, @NrLicencasPortal, @NrUsuariosSomentePortal, @NrUsuariosSomentePortalBloqueado, @NrUsuariosSomenteMobile, @NrUsuariosPortalMobileComIdPalm, @NrUsuariosPortalMobileComIdPalmBloqueado, @NrUsuariosPortalMobileSemIdPalm, @NrUsuariosPortalMobileSemIdPalmBloqueado, @NrUsuariosPortalMobileUnico, (@NrUsuariosPortalMobileComIdPalm + @NrUsuariosPortalMobileComIdPalmBloqueado + @NrUsuariosPortalMobileSemIdPalm + @NrUsuariosPortalMobileSemIdPalmBloqueado + @NrUsuariosSomenteMobile + @NrUsuariosSomentePortal + @NrUsuariosSomentePortalBloqueado), @NrUsuariosPortalDesativados, @NrUsuariosPortalBloqueados); SELECT * FROM @VisaoLicencasUsuariosPorEmpresa
SELECT 'INSERT INTO USUARIO_EMPRESA VALUES (' + CAST( (1331 + ROW_NUMBER() OVER(ORDER BY CD_USUARIO ASC) ) as VARCHAR(20)) + ',' + CAST(CD_TUSUARIO AS VARCHAR(10)) + ',''' + 'estrellagaliciahomolog'', ' + CAST(VALIDO AS VARCHAR(10)) + ',''' + ISNULL(CAST(DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' + ISNULL(CAST(DT_CRIACAO AS VARCHAR(100)), 'NULL') + ''',' + CAST(PAPEL AS VARCHAR(10)) + ')' FROM USUARIO_EMPRESA WHERE NM_EMPRESA = 'estrellagalicia' SELECT 'INSERT INTO USUARIO VALUES ' + '(''' + ISNULL(U.NOME, 'NULL') + ''',''' + ISNULL(U.LOGIN, 'NULL') + '' + ''',''' + ISNULL(U.EMAIL, 'NULL') + ''',''' + ISNULL(U.SENHA, 'NULL') + ''',''' + ISNULL(U.SALT, 'NULL') + ''',''' + ISNULL(U.TELEFONE, 'NULL') + ''',''' + ISNULL(CAST(U.NUMERO_VIOLACOES AS VARCHAR(100)), 'NULL') + ''',''' + ISNULL(CAST(U.VALIDO AS VARCHAR(100)), 'NULL') + ''',''' + ISNULL(CAST(U.DT_VALIDADE AS VARCHAR(100)), 'NULL') + ''',''' + ISNULL(CAST(U.DT_CRIACAO AS VARCHAR(100)), 'NULL') + ''',''' + ISNULL(U.URL_FOTO, 'NULL') + ''',''' + ISNULL(CAST(U.DELTA_ITERACOES AS VARCHAR(100)), 'NULL') + ''')' FROM USUARIO U INNER JOIN USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO WHERE NM_EMPRESA = 'estrellagalicia'
- Análise de processo de importação
select * from dw_importacao order by 3 desc select db_name(dbid), * from sys.sysprocesses where db_name(dbid) = 'bd_ssm_coopatos' and program_name like '%Import%' EXEC sp_who2 23230 DBCC INPUTBUFFER(23230)
--Reindex das Estruturas do Banco Print '' Print 'Data e Hora início: ' + convert(varchar(20),GetDate(),25) Print '*****************************************' Print '' Declare @Tabela Varchar(300) Declare @indice Varchar(300) Declare @select varchar (2000) declare @banco varchar(50) set @banco = 'bd_ssm_makitabeta' Print 'INICIO REBUILD BANCO DE DADOS: ' + upper(@banco) Create table #temp (cod int primary key identity, banco varchar (100), tabela varchar (300), indice varchar (300)) insert into #temp (banco, tabela, indice) exec ('select ' + '''' + @banco + '''' + ' as banco, o.name as tabela, i.name as indice from ' + @banco + '.sys.objects o join ' + @banco + '.sys.indexes i on (o.OBJECT_id = i.OBJECT_id) where o.type = ''u'' and i.name is not null order by 2') --select * from #temp Declare Reindex Cursor For select banco, tabela, indice from #temp Open Reindex Fetch Next From Reindex into @banco, @Tabela, @indice Set Nocount On While @@Fetch_Status = 0 Begin Print (@Tabela) print('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD') Exec('ALTER INDEX [' + @indice + '] ON ' + @banco + '.dbo.' + @tabela + ' REBUILD') Print ' ' Fetch Next From Reindex into @banco, @Tabela, @indice --Print 'Status: ' + cast(@@Fetch_Status as varchar(20)) End Close Reindex Deallocate Reindex Set nocount off Print '' Print '*****************************************' Print 'Data e Hora Fim: ' + convert(varchar(20),GetDate(),25) Print '' Print ''
- Inserir banners em todas as bases de produção.
select 'INSERT INTO '+ name +'..BANNER (CD_BANNER,DS_BANNER,DT_INICIO_VIGENCIA,DT_FIM_VIGENCIA,DS_SITUACAO,LINK_IMAGEM,LINK_DIRECT,NR_TIMER,CD_TAMANHO) VALUES '+ ' ( (SELECT MAX(CD_BANNER) + 1 FROM '+ name +'..BANNER), ''WEBINAR 4'', GETDATE(), ''2020-05-30 00:01:00.000'', 2, ''https://sscatalogo.s3.amazonaws.com/marketing/banner_live_evo_3.jpg'', ''https://www.youtube.com/watch?v=0BzRbzEMh9A'', 1, 1); ' + ' INSERT INTO '+ name +'..APLICACAO_BANNER (CD_APLICACAO_BANNER, CD_BANNER) VALUES ((SELECT MAX(CD_APLICACAO_BANNER) + 1 FROM '+ name +'..APLICACAO_BANNER), (SELECT MAX(CD_BANNER) FROM '+ name +'..BANNER));' from sys.databases where name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' and name not like '%adm%' and name not like '%login%' and name not like '%cpf%' and name not like '%dovac%' order by name desc;
- Delete de registros já removidos da log_alteracao_usuario
SET nocount ON; DECLARE @r INT; DECLARE @msg VARCHAR(max) DECLARE @restantes INT DECLARE @t1 DATETIME DECLARE @t2 DATETIME IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence DROP TABLE #pode_apagar; SET @t1 = Getdate() SET @msg = 'obtendo lista de registros para apagar...' RAISERROR(@msg,0,1) WITH nowait SELECT cd_sinc_usuario INTO #pode_apagar FROM log_alteracao_usuario lau WHERE EXISTS (SELECT TOP 1 1 FROM log_sync_strategy las WHERE lau.cd_usuario = las.cd_usuario AND lau.nm_tabela = las.nm_tabela AND lau.dt_insercao < las.dt_last_sync) SET @restantes = (SELECT Count(1) FROM #pode_apagar) SET @msg = 'total para apagar ' + Cast(@restantes AS VARCHAR(max)) + ' em ' + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max)) + 's' RAISERROR(@msg,0,1) WITH nowait SET @r = 1; WHILE @r > 0 BEGIN BEGIN TRAN SET @t2 = Getdate() DELETE TOP (50000) lau FROM log_alteracao_usuario lau WHERE EXISTS (SELECT TOP 1 1 FROM #pode_apagar pa WHERE pa.cd_sinc_usuario = lau.cd_sinc_usuario) SET @r = @@ROWCOUNT; SET @restantes = @restantes - @r SET @msg = 'apagados ' + Cast(@r AS VARCHAR(max)) + ' em ' + Cast(Datediff(ss, @t2, Getdate()) AS VARCHAR(max)) + 's, faltam ' + Cast(@restantes AS VARCHAR(max)) RAISERROR(@msg,0,1) WITH nowait COMMIT TRANSACTION; CHECKPOINT; END IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence DROP TABLE #pode_apagar; SET @msg = 'finalizado em ' + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR(max)) + 's' RAISERROR(@msg,0,1) WITH nowait
- Scripts para token de
use bd_ssm_login; --INSERIR INICIALMENTE UM USUÁRIO NA TABELA USUARIO DA LOGIN INSERT INTO USUARIO VALUES ('INTEGRADOR NOMEDAEMPRESA', 'int@nomeempresa', 'integrador@nomeempresa.com.br', '3+ACVdglI558tfon1MRmVw==', 'SS', NULL, 0, 1, NULL, GETDATE(), NULL, 0); --INSERIR UM REGISTRO NA USUARIO_EMPRESA INSERT INTO USUARIO_EMPRESA VALUES ((SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), NULL, 'nomedaempresaminusculo', 1, NULL, GETDATE(), 5) --INSERIR UM TOKEN PARA O USUÁRIO INSERT INTO TOKEN VALUES ((SELECT SUBSTRING(REPLACE(CAST(NEWID() AS VARCHAR(40)), '-', ''), 1, 20)), (SELECT CD_USUARIO FROM USUARIO WHERE NOME = 'INTEGRADOR NOMEDAEMPRESA'), GETDATE(), '2030-02-06 10:14:00.593') SELECT * FROM USUARIO WHERE NOME LIKE '%INTEGRADOR NOMEDAEMPRESA%'; SELECT * FROM USUARIO_EMPRESA WHERE CD_USUARIO = 7491 SELECT * FROM TOKEN WHERE CD_USUARIO = 7491
SELECT * FROM USUARIO_EMPRESA UE INNER JOIN USUARIO U ON U.CD_USUARIO = UE.CD_USUARIO WHERE NM_EMPRESA = 'lorenferhomolog' AND UE.PAPEL = 5 SELECT * FROM TOKEN WHERE CD_USUARIO = 8353
- Atalhos para tj2
Endpoints
/api/about/ /importstatus /importstatus/{id} /importstatus-logged /importstatus-logged/{id}
{"PRODUTO_ESTOQUE":[{"id":"-2147483648","cd_produto":"111","cd_estoque":"0","qt_estoque":"999999"}]}
curl http://169.61.109.210:8185/erp-importer/campneushomolog/import -H 'SSAUTH_TOKEN: 123' -H 'Content-type: application/json' -X POST -d @dados.json
{"ROTA":[{"cd_rota":"1","ds_rota":"SEGUNDA-FEIRA","ds_dias_rota":"1","ativa":"1"},{"cd_rota":"2","ds_rota":"TERCA-FEIRA","ds_dias_rota":"1","ativa":"1"}]}
- Inserir limitação de conexões para um aplicativo com Hikari GS
use bd_ssm_adm; SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'SSBATCHES'; SELECT * FROM EMPRESA; INSERT INTO EMPRESA_BD_PROPERTIES SELECT CD_EMPRESA, 'SSBATCHES', NULL, 2 FROM EMPRESA E INNER JOIN SYS.DATABASES SDBS ON ('BD_SSM_' + E.NM_EMPRESA) = SDBS.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS;
- Atualizações de quantidades de conexões dos serviços de integração
use bd_ssm_adm; --ERP-INTEGRATOR SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('pardalsorvetes','wsembalagens','paodahora','lacbom', 'gustamais','futuragrohomolog','mizu','auster','austerhomolog','yama','grupoisdrahomolog','bakerfoods','dicoplasthomolog','iranduba', 'motasa','serveng','fiore','gol','iranduba','lebrinha') SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'TJ2' AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688) --UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15 --WHERE APPNAME = 'TJ2' -- AND CD_EMPRESA IN (57,421,581,584,590,594,602,603,605,606,607,608,609,610,612,625,629,635,688) --ERP-IMPORTER SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('campneus','lacbom','lebrinha','mizu') SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'tj-importer' AND CD_EMPRESA IN (549,581,584,609) UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15 WHERE APPNAME = 'tj-importer' AND CD_EMPRESA IN (549,581,584,609) --ERP-IMPORTERNEW SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('montana','montanahomolog') SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'tj-importernew' AND CD_EMPRESA IN (640,641) UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 15 WHERE APPNAME = 'tj-importernew' AND CD_EMPRESA IN (640,641) --NEOGRID SELECT CAST(CD_EMPRESA AS varchar(5)) + ',' FROM EMPRESA WHERE NM_EMPRESA IN ('davene','davenehomolog','casakm','casakmhomolog') SELECT * FROM EMPRESA_BD_PROPERTIES WHERE APPNAME = 'neogrid' AND CD_EMPRESA IN (587,599,642,643) UPDATE EMPRESA_BD_PROPERTIES SET NR_MAXCOUNT = 5 WHERE APPNAME = 'neogrid' AND CD_EMPRESA IN (587,599,642,643)
- Contar quantidade de conexões por serviços
use bd_ssm_adm; SELECT COUNT(*), sd.name FROM sys.sysprocesses sp inner join sys.sysdatabases sd on sp.dbid = sd.dbid WHERE program_name LIKE '%tj-importer%' group by sd.name SELECT COUNT(*), sd.name FROM sys.sysprocesses sp inner join sys.sysdatabases sd on sp.dbid = sd.dbid WHERE program_name LIKE '%TJ2%' group by sd.name
- Magia do Jeff
AND DS_OBSERVACAO LIKE '%[^A-Za-z@#$0-9@/_ .,+%!-]%'
- Script de limpeza de registros duplicados.
BEGIN TRANSACTION CREATE TABLE TABELA_TEMP ( CD_USUARIO INT, LONGITUDE DECIMAL(10, 6), LATITUDE DECIMAL(10, 6), DT_COORD DATETIME, PRECISAO INT, ORIGEM VARCHAR(2) ) INSERT INTO TABELA_TEMP SELECT DISTINCT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM COORDENADA_RASTREAMENTO ORDER BY DT_COORD ASC; TRUNCATE TABLE COORDENADA_RASTREAMENTO; INSERT INTO COORDENADA_RASTREAMENTO (CD_USUARIO, LONGITUDE, LATITUDE, DT_COORD, PRECISAO, ORIGEM) SELECT CD_USUARIO, LONGITUDE, LATITUDE,DT_COORD, PRECISAO, ORIGEM FROM TABELA_TEMP ORDER BY DT_COORD ASC; DROP TABLE TABELA_TEMP; COMMIT;
- Criação de usuários de clientes na makita
SELECT * FROM USUARIO_VINCULACAO; INSERT INTO TGRUPOSUSUARIO (CD_USUARIO, CD_GRUPO) SELECT CD_USUARIO, 7 FROM TUSUARIO WHERE DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A==' INSERT INTO USUARIO_VINCULACAO (CD_TUSUARIO, CD_VINCULADO, CD_TIPO_VINCULADO) SELECT T.CD_USUARIO, C.CD_CLIENTE, 'C' FROM TUSUARIO T INNER JOIN CLIENTE C ON C.NR_CNPJ_CPF = T.NM_GUERRA COLLATE SQL_Latin1_General_CP1_CI_AS WHERE T.DS_SENHA = '4ZdOxz2fsGR3xqAJeGo82A==' AND C.CD_CLIENTE IN (13913) INSERT INTO TUSUARIO (CD_USUARIO,NM_USUARIO,DS_EMAIL,DS_SENHA,ID_SUPER,NM_GUERRA,DT_EXPSENHA,DT_ALTSENHA,NR_VIOLACOES, CD_SITUACAO,DT_SITUACAO,DS_MOTIVO_SITUACAO,ID_ALT_SENHA_PROX_LOGIN,CD_TPUSUARIO,CD_EMPRESA,CD_FILIAL,ID_USER_SOFTSITE, ID_ATIVO,IMEI_GPS) SELECT ((SELECT MAX(CD_USUARIO) FROM TUSUARIO) + ROW_NUMBER() OVER(ORDER BY CD_CLIENTE ASC)) AS CD_USUARIO, CAST(C.NM_CLIENTE AS VARCHAR(40)) AS NM_USUARIO, C.DS_EMAIL, '4ZdOxz2fsGR3xqAJeGo82A==' AS DS_SENHA, 'N' AS ID_SUPER, C.NR_CNPJ_CPF AS NM_GUERRA, NULL AS DT_EXPSENHA, GETDATE() AS DT_ALTSENHA, 0 AS NR_VIOLACOES, 1 AS CD_SITUACAO, GETDATE() AS DT_SITUACAO, NULL AS DS_MOTIVO_SITUACAO, NULL AS ID_ALT_SENHA_PROX_LOGIN, NULL AS CD_TPUSUARIO, NULL AS CD_EMPRESA, NULL AS CD_FILIAL, 'N' AS ID_USER_SOFTSITE, NULL AS ID_ATIVO, NULL AS IMEI_GPS FROM CLIENTE C WHERE CD_CLIENTE IN (13913) AND NOT EXISTS (SELECT TOP 1 1 FROM USUARIO_VINCULACAO UE WHERE C.CD_CLIENTE = UE.CD_VINCULADO)
- Visualização de falhas de importação
DECLARE @nomeBanco varchar(100); DECLARE bancos CURSOR FOR SELECT name FROM sys.databases where name like 'bd_ssm_%' and state_desc = 'online' and name not like '%prontaentrega%' and name not like '%adm%' and name not like '%login%' and name not like '%cpf%' and name not like '%expressa%' and name not like '%makitahomolog%' and name not like '%prodentho_2%' OPEN bancos FETCH NEXT FROM bancos INTO @nomeBanco WHILE @@FETCH_STATUS = 0 BEGIN EXEC ('use ' + @nomeBanco + ';' + 'SELECT TOP 1 ''NOME DO BANCO '' + REPLACE(''' + @nomeBanco +''', ''bd_ssm_'','''') , * FROM DW_IMPORTACAO WHERE ISNULL(RESULTADO, ''A'') IN (''F'', ''A'') ORDER BY 4 DESC;'); END CLOSE bancos; DEALLOCATE bancos;
- Configurar base para usar o Claudus V3
ALTER TABLE LOG_ITEM_PEDIDO ADD NR_ITEM_PEDIDO BIGINT GO ALTER TABLE LOG_ITEM_PEDIDO_RETORNO ADD NR_ITEM_PEDIDO BIGINT GO ALTER TRIGGER [dbo].[TR_AUDIT_LOG_DELETE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR DELETE AS DECLARE @TODAY DATETIME SET @TODAY = GETDATE() INSERT INTO LOG_ITEM_PEDIDO ( DT_LOG ,ID_KEY ,TP_OPERACAO ,CD_PEDIDO_PALM ,NR_ITEM_PEDIDO ,CD_PRODUTO ) SELECT @TODAY as DT_LOG ,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY ,'D' as TP_OPERACAO ,CD_PEDIDO_PALM ,NR_ITEM_PEDIDO ,CD_PRODUTO FROM DELETED GO ALTER TRIGGER [dbo].[TR_AUDIT_LOG_UPDATE_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR UPDATE AS DECLARE @TODAY DATETIME SET @TODAY = GETDATE() INSERT INTO LOG_ITEM_PEDIDO ( DT_LOG ,ID_KEY ,TP_OPERACAO ,CD_PEDIDO_PALM ,NR_ITEM_PEDIDO ,CD_PRODUTO ) SELECT @TODAY as DT_LOG ,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY ,'U' as TP_OPERACAO ,CD_PEDIDO_PALM ,NR_ITEM_PEDIDO ,CD_PRODUTO FROM INSERTED GO ALTER TRIGGER [dbo].[TR_AUDIT_LOG_INSERT_ITEM_PEDIDO] ON [dbo].[ITEM_PEDIDO] FOR INSERT AS DECLARE @TODAY DATETIME SET @TODAY = GETDATE() INSERT INTO LOG_ITEM_PEDIDO ( DT_LOG ,ID_KEY ,TP_OPERACAO ,CD_PEDIDO_PALM ,NR_ITEM_PEDIDO ,CD_PRODUTO ) SELECT @TODAY as DT_LOG ,('CD_PEDIDO_PALM='+CONVERT(VARCHAR(20),CD_PEDIDO_PALM)+';NR_ITEM_PEDIDO='+CONVERT(VARCHAR(20),NR_ITEM_PEDIDO)+';CD_PRODUTO='+CONVERT(VARCHAR(10),CD_PRODUTO)) AS ID_KEY ,'I' as TP_OPERACAO ,CD_PEDIDO_PALM ,NR_ITEM_PEDIDO ,CD_PRODUTO FROM INSERTED GO
- Consulta para trazer os pedidos auto do geosales3
SELECT cd_pedido_cliente [cdPedidoCliente], pa.cnpj_cliente [cliente.nrCnpjCpf], c.cd_cliente [cliente.cdCliente], c.nm_cliente [cliente.nmCliente], c.cd_org_venda_padrao [cliente.orgVendaPadrao.cdOrgVenda], ov.nm_organizacao [cliente.orgVendaPadrao.nmOrganizacao], c.cd_vendedor_padrao [cliente.vendedorPadrao.codigo], v.nm_vendedor [cliente.vendedorPadrao.nome], c.cd_tab_preco_padrao [cliente.tabPrecoPadrao.cdTabPreco], tp.ds_tab_preco [cliente.tabPrecoPadrao.dsTabPreco], c.nm_estado [cliente.enderecoPadrao.nmEstado], c.cd_cond_pgto_padrao [cliente.condPgtoPadrao.cdCondPgto], cp.ds_cond_pgto [cliente.condPgtoPadrao.dsCondPgto], c.cd_meio_pgto_padrao [cliente.meioPagamentoPadrao.cdMeioPgto], mp.ds_meio_pgto [cliente.meioPagamentoPadrao.dsMeioPgto], cnpj_fornecedor [cnpjFornecedor], dt_emissao [dataEmissaoStr], cp.cd_cond_pgto [condicaoPagamento.cdCondPgto], cp.ds_cond_pgto [condicaoPagamento.dsCondPgto], cp.pr_desconto [condicaoPagamento.prDescontoStr], dt_vencimento [dataVencimentoStr], cd_tipo_frete [frete.idTipoFrete], motivo_bonificacao [motivoBonificacao], dt_entrega [dataEntregaStr], obs_pedido [observacaoPedido], pa.cd_tipo_pedido [tipoPedido.codTipo], tmp.ds_tipo [tipoPedido.descTipo], id_utilizado [idUtilizadoStr] FROM pedido_auto pa INNER JOIN cliente c ON pa.cnpj_cliente = c.nr_cnpj_cpf INNER JOIN organizacao_venda ov ON c.cd_org_venda_padrao = ov.cd_org_venda INNER JOIN vendedor v ON c.cd_vendedor_padrao = v.cd_vendedor INNER JOIN tabela_preco tp ON c.cd_tab_preco_padrao = tp.cd_tab_preco INNER JOIN condicao_pagamento cp ON c.cd_cond_pgto_padrao = cp.cd_cond_pgto INNER JOIN meio_pagamento mp ON mp.cd_meio_pgto = c.cd_meio_pgto_padrao INNER JOIN tipo_movimento_pedido tmp ON pa.cd_tipo_pedido = tmp.cd_tipo WHERE ( EXISTS ( SELECT TOP 1 1 FROM Fn_obter_cliente_usuario(#usuario.codigo#) fn WHERE ( fn.cd_cliente = c.cd_cliente ) ) ) AND pa.id_utilizavel = 'S' AND id_utilizado = 'N'
- Scripts de análise de configuração do novo aplicativo de rastreamento
--CONFIGURACAO SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_BASE_URL%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_CAPTURAR_LOG%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_FUNCTION_MODE%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_START%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_HOUR_FINISH%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_LOGGED_APP%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_MIN_DISTANCE%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_N_TRY%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_ENVIAR_LOG%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_NUMERO_INSERIR_LOG%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_SLEEP_TRY%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_STOP_SERVICE_PERMISSION%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TIMER_BATTERY%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_TRIANGULATION_ACTIVE%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%GPS_VIEW_CONFIGURATION%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_GPS%' SELECT * FROM CONFIGURACAO WHERE DS_CHAVE LIKE '%SSWM_ID_LOCK%' --IMEI USUARIO SELECT IMEI_GPS, * FROM TUSUARIO WHERE CD_USUARIO = 181 --358692106755103 --VENDEDOR DE ANÁLISE SELECT IMEI, * FROM DADOS_VENDEDOR WHERE CD_VENDEDOR = 37; --358692106755103 --VERIFICAR STATUS DO GPS SELECT * FROM GPS_STATUS WHERE CD_USUARIO = 181 order by 3 desc; --VERIFICAR COORDENADAS SELECT * FROM COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 181 order by 5 desc --teste SELECT * FROM bd_ssm_webinargeosales..GPS_STATUS WHERE CD_USUARIO = 155 order by 3 desc; SELECT * FROM bd_ssm_webinargeosales..COORDENADA_RASTREAMENTO WHERE CD_USUARIO = 155 ORDER BY 5 DESC; --GPS STATUS --A - ATIVO - (GPS OU INTERNET) --D - DESATIVADO - (GPS OU INTERNET) --C - DESTRUIÇÃO DO SERVIÇO DE CONFIGURACAO --R - DESTRUIÇÃO DO SERVIÇO DE RASTREAMENTO
- Achar tabelas que tem a coluna Y
select SO.NAME, * from sys.columns SC INNER JOIN sys.objects SO ON SC.object_id = SO.object_id where SC.name like '%cd_org_venda%' and type = 'U'
- Migrar imagens de catálogo para produto imagem no evo
BEGIN TRANSACTION DECLARE @Imagens TABLE(DESC_FOTO VARCHAR(100), URL VARCHAR(1000), ID_ATIVO bit) DECLARE @ProdutoImagens TABLE(CD_PRODUTO INT, CD_IMAGEM INT, ID_PRINCIPAL CHAR(1), ID_ATIVO BIT) INSERT INTO @Imagens SELECT DISTINCT DS_FOTO, DS_URL, 1 FROM CATALOGO_FOTO; INSERT INTO IMAGEM SELECT ROW_NUMBER() OVER(ORDER BY DESC_FOTO ASC), DESC_FOTO, URL, ID_ATIVO FROM @Imagens; INSERT INTO @ProdutoImagens SELECT CF.CD_PRODUTO, I.CD_IMAGEM, CF.ID_PRINCIPAL, 1 FROM IMAGEM I INNER JOIN CATALOGO_FOTO CF ON I.URL_IMAGEM = CF.DS_URL WHERE CD_PRODUTO IS NOT NULL INSERT INTO PRODUTO_IMAGEM SELECT DISTINCT CD_PRODUTO, CD_IMAGEM, ID_PRINCIPAL, ID_ATIVO FROM @ProdutoImagens COMMIT;
- VERIFICAR PORQUE O PRODUTO NÃO APARECE PRO CLIENTE APÓS O PREENCHIMENTO DO CABEÇALHO
--consulta que traz os pedido quando multiplos estoques está ativado SELECT p.cd_produto,* FROM fn_obter_produtos_com_paginacao('0101089', 2, 38, null) pot INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto --INNER JOIN familia_produto fp ON p.cd_familia = fp.cd_familia AND fp.cd_familia = #{familia.key} INNER JOIN lista_produto lp WITH(NOLOCK) ON (lp.cd_produto = pot.cd_produto AND lp.cd_org_venda = pot.cd_org_venda AND lp.cd_tab_preco = pot.cd_tab_preco) where EXISTS ( SELECT 1 FROM produto_estoque pe WHERE pe.cd_produto = p.cd_produto AND pe.cd_estoque = 200 ) ORDER BY p.nm_produto OFFSET 0 ROWS FETCH NEXT 18 ROWS ONLY --funcão de paginação CREATE FUNCTION [dbo].[fn_obter_produtos_com_paginacao] ( @cdOrgVenda VARCHAR(20), @cdTabPreco INT, @cdCliente INT, @param VARCHAR(100)) RETURNS TABLE AS RETURN ( WITH org_venda AS ( SELECT ov.cd_org_venda, ovc.cd_cliente, ov.cd_estoque, ovc.cd_tab_preco FROM organizacao_venda ov WITH(NOLOCK) INNER JOIN org_venda_cliente ovc WITH(NOLOCK) ON ov.cd_org_venda = ovc.cd_org_venda WHERE ov.cd_org_venda = @cdOrgVenda AND ovc.cd_tab_preco = @cdTabPreco AND ovc.cd_cliente = @cdCliente ), produto_organizacao_tabela AS ( SELECT p.cd_produto, p.nm_produto, ov.cd_cliente, ov.cd_org_venda, ov.cd_estoque, ov.cd_tab_preco FROM produto p WITH(NOLOCK) CROSS JOIN org_venda ov WITH(NOLOCK) WHERE ( (@param IS NULL) OR (p.nm_produto LIKE '%' + @param + '%' OR p.cd_produto LIKE '%' + @param + '%' OR p.cd_referencia LIKE '%' + @param + '%' OR p.cod_barras LIKE '%' + @param + '%' OR p.cd_ncm LIKE '%' + @param + '%') ) ) SELECT p.cd_pr oduto, pot.cd_org_venda, pot.cd_tab_preco, pot.cd_estoque FROM produto_organizacao_tabela pot INNER JOIN produto p WITH(NOLOCK) ON pot.cd_produto = p.cd_produto )
- Remover usuários inválidos de uma base mssql
declare @db varchar(50) declare @cont int declare @usuariodb varchar(50) declare @cmd varchar (200) --set @db = (SELECT '?' AS db_name) --print @db create table ##usuariobd (cod int primary key identity, nome_usuario varchar (50), nome_login varchar(50)) insert into ##usuariobd select su.name, sl.name--, db_name() from [dbo].[sysusers] su left join sys.syslogins sl on su.sid = sl.sid where su.uid > 4 and su.name not like 'db_%' and su.name <> 'MS_DataCollectorInternalUser' and issqlrole <> 1 and sl.name is null order by 1 set @cont = (select MAX(cod) from ##usuariobd) while @cont >0 begin set @usuariodb = (select nome_usuario from ##usuariobd where cod = @cont) IF EXISTS (SELECT SCHEMA_ID FROM sys.schemas WHERE [name] = @usuariodb) BEGIN print 'Deletando Schema ' + @usuariodb set @cmd = 'drop schema [' + @usuariodb + ']' print @cmd exec (@cmd) END print 'Deletando usuário '+ @usuariodb + '!' set @cmd= 'drop user [' + @usuariodb + ']' exec (@cmd) set @cont = @cont -1 end drop table ##usuariobd
- Pegar dados servidor de banco de dados
SELECT @@SERVERNAME, CONNECTIONPROPERTY('net_transport') AS net_transport, CONNECTIONPROPERTY('protocol_type') AS protocol_type, CONNECTIONPROPERTY('auth_scheme') AS auth_scheme, CONNECTIONPROPERTY('local_net_address') AS local_net_address, CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port, CONNECTIONPROPERTY('client_net_address') AS client_net_address
- Agregador de dados
SELECT c.cd_cliente, STRING_AGG(r.DS_ROTA, ', ') FROM cliente c LEFT JOIN CLIENTE_ROTA cr on c.CD_CLIENTE = cr.CD_CLIENTE LEFT JOIN ROTA r on r.CD_ROTA = cr.CD_ROTA GROUP BY c.cd_cliente
- Script para validar se o pedido pode ser copiado
SELECT -- pedido P.cd_pedido_palm AS [cdPedidoPalm], P.dt_emissao AS [dtEmissao], P.dt_vencimento AS [dtVencimento], P.cd_pedido_cliente AS [cdPedidoCliente], P.cd_pedido AS [cdPedido], P.dt_entrega AS [dtEntrega], P.dt_faturamento AS [dtFaturamento], P.dt_entrega_calculada AS [dtEntregaCalculada], P.id_prioridade AS [idPrioridade], P.ds_observacao AS [observacao], P.ds_obs_frete AS [observacaoFrete], P.ds_observacao_nf AS [observacaoNotaFiscal], P.nm_rz_social_entr AS [nmRazaoSocialEntrega], P.nr_cnpj_cpf_entr AS [cpfCnpjEntrega], P.nr_cgf_entr AS [cgfEntrega], P.nm_responsavel AS [nomeResponsavel], P.id_orcamento AS [orcamento], P.cd_rota AS [cdRota], P.id_efetivado AS [efetivado], P.pc_desconto AS [pcDesconto], P.id_cross_docking AS [crossDocking], P.pc_desc_bonif AS [pcDescBonif], P.vr_outros_descontos AS [outrosDescontos], P.vr_frete_manual AS [vrFreteManual], P.vr_frete_manual_original AS [vrFreteManualOriginal], P.acrescimo_dias AS [acrescimoDias], P.qt_quilometros_entrega AS [qtQuilometrosEntrega], P.qt_quilometros_cobranca AS [qtQuilometrosCobranca], -- cliente --> C.cd_cliente AS [cliente@cdCliente], C.cd_aprovacao AS [cliente@cdAprCliente], CASE WHEN C.origem = 'CLIENTE_APROVACAO' THEN 1 ELSE 0 END AS [cliente@isProspect], -- organizacao venda OV.cd_org_venda AS [orgVenda@cdOrgVenda], -- tipo pedido TMP.cd_tipo AS [tipoPedido@codTipo], -- vendedor V.cd_vendedor AS [vendedor@codigo], -- tabela preco TP.cd_tab_preco AS [tabPreco@cdTabPreco], -- estoque P.cd_estoque AS [estoque@cdEstoque], -- canal de venda p.cd_canal AS [canalVenda@codigo], -- meio pagamento P.cd_meio_pgto AS [meioPagamento@cdMeioPgto], -- meio pagamento secundario P.cd_meio_pgto_sec AS [meioPgtoSecundario@cdMeioPgto], -- cond. pgto P.cd_cond_pgto AS [condPgto@cdCondPgto], -- cond. pgto secundario P.cd_cond_pgto_sec AS [condPgtoSecundario@cdCondPgto], -- tipo frete P.id_tipo_frete AS [tipoFrete@idTipoFrete], -- transportadora P.cd_transportadora AS [transportadora@codigo], -- transportadora auxiliar p.cd_transportadora_auxiliar AS [transportadoraAuxiliar@codigo], -- situacao pedido SP.cd_st_pedido AS [situacaoPedido@cdStPedido], SP.ds_st_pedido AS [situacaoPedido@dsStPedido], -- pedido pai PPAI.cd_pedido_palm AS [pedidoPaiDTO@cdPedidoPalm], PPAI.dt_emissao AS [pedidoPaiDTO@dtEmissao], PPAI.vr_pedido_impostos AS [pedidoPaiDTO@vrPedidoImpostos], -- endereco entrega P.cd_endereco_entrega AS [enderecoEntrega@cdEndereco], P.ds_endereco_entr AS [enderecoEntrega@dsEndereco], P.nm_bairro_entr AS [enderecoEntrega@nmBairro], P.nm_cidade_entr AS [enderecoEntrega@nmCidade], P.nm_estado_entr AS [enderecoEntrega@nmEstado], P.nr_cep_entr AS [enderecoEntrega@nrCep], P.nr_fone_entr AS [enderecoEntrega@nrTelefone], P.nr_cnpj_cpf_entr AS [enderecoEntrega@nrCnpjCpf], -- endereco cobranca P.cd_endereco_cobranca AS [enderecoCobranca@cdEndereco], P.ds_endereco_cobr AS [enderecoCobranca@dsEndereco], P.nm_bairro_cobr AS [enderecoCobranca@nmBairro], P.nm_cidade_cobr AS [enderecoCobranca@nmCidade], P.nm_estado_cobr AS [enderecoCobranca@nmEstado], P.nr_cep_cobr AS [enderecoCobranca@nrCep], P.nr_fone_cobr AS [enderecoCobranca@nrTelefone], P.nr_cnpj_cpf_cobr AS [enderecoCobranca@nrCnpjCpf], -- pedido informacao extra PIEXT.cd_inf AS [pedInfoExtra@cdInf], PIEXT.ds_inf AS [pedInfoExtra@dsLabel], PIEXT.cd_tipo_inf AS [pedInfoExtra@cdTipoInf], PIEXT.ds_livre_inf AS [pedInfoExtra@dsLivreInf], -- tramitacao_pedido trp.cd_pedido_palm AS [tramitacaoPedido@cdPedidoPalm], trp.cd_pedido_palm AS [tramitacaoPedido@pedido@cdPedidoPalm], trp.cd_tramitacao AS [tramitacaoPedido@tramitacao@cdTramitacao], tram.ds_tramitacao AS [tramitacaoPedido@tramitacao@dsTramitacao], trp.ds_observacao AS [tramitacaoPedido@dsObservavao], trp.dt_tramitacao AS [tramitacaoPedido@dtTramitacao], trp.cd_usuario AS [tramitacaoPedido@usuarioSistema@codigo], -- tramitacao_pedido P.cd_motivo_pedido AS [motivoPedido@cdMotivoPedido], mot.ds_motivo_pedido AS [motivoPedido@dsMotivoPedido] FROM vw_pedidos P INNER JOIN (SELECT cd_cliente, nm_cliente, cd_aprovacao, origem FROM vw_clientes) C on (P.cd_cliente = C.cd_cliente) INNER JOIN (SELECT cd_org_venda, nm_organizacao FROM organizacao_venda WITH (NOLOCK)) OV ON P.cd_org_venda = OV.cd_org_venda INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo FROM tipo_movimento_pedido) TMP on (P.cd_tipo_pedido = TMP.cd_tipo) INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor) V ON P.cd_vendedor = V.cd_vendedor INNER JOIN tabela_preco TP ON P.cd_tab_preco = TP.cd_tab_preco LEFT JOIN situacao_pedido sp ON P.cd_st_pedido = sp.cd_st_pedido LEFT JOIN (SELECT cd_pedido_palm, dt_emissao, vr_pedido_impostos FROM vw_pedidos WITH(NOLOCK)) ppai ON P.cd_pedido_palm_pai = ppai.cd_pedido_palm LEFT JOIN vw_pedidos_informacoes_extras PIEXT ON P.cd_pedido_palm = PIEXT.cd_pedido_palm LEFT JOIN vw_tramitacoes_pedidos trp WITH(NOLOCK) ON P.cd_pedido_palm = trp.cd_pedido_palm LEFT JOIN tramitacao tram ON trp.cd_tramitacao = tram.cd_tramitacao LEFT JOIN motivo_pedido mot ON mot.cd_motivo_pedido = P.cd_motivo_pedido WHERE P.cd_pedido_palm = 20063013102232739 AND ( ( (P.origem = 'PEDIDO_RETORNO' OR P.origem = 'PEDIDO') AND EXISTS ( -- org_venda_cliente SELECT TOP 1 1 FROM org_venda_cliente OVC WHERE P.cd_org_venda = OVC.cd_org_venda AND P.cd_cliente = OVC.cd_cliente AND P.cd_vendedor = OVC.cd_vendedor AND P.cd_tab_preco = OVC.cd_tab_preco ) ) OR ( P.origem = 'PEDIDO_APROVACAO' AND EXISTS ( -- parametros_cliente_prospect SELECT TOP 1 1 FROM parametros_venda_prospect PCP WHERE P.cd_org_venda = PCP.cd_org_venda AND P.cd_vendedor = PCP.cd_vendedor AND P.cd_tab_preco = PCP.cd_tab_preco ) ) )
- Script para criar um usuário com todos os acessos no EVO/NuPortal
-- __ __ __ __ ___ __ --/ _` / \ | \ | | /__` |__ |__) --\__> \__/ |__/ \__/ .__/ |___ | \ -- 1º utilize a base desejada e insira o nome da empresa em @nm_empresa use bd_ssm_biodinamicajucianodev DECLARE @nm_empresa VARCHAR(200) = 'biodinamicajucianodev' -- 2º escolha um nome(novo ou já existente) para o perfil que terá acesso a tudo, este nome também será a senha para o portal EVO. DECLARE @nm_new_perfil VARCHAR(100) = 'dog' -- 3º Escolha um usuário da base escolhida que não exista na USUARIO_PERFIL através da query abaixo. -- Observe que a consulta utiliza as variáveis acima para funcionar, então selecione-as ao executá-la. SELECT DISTINCT (u.cd_usuario), ue.cd_tusuario, u.nome, u.login, u.email, u.senha, u.salt, u.dt_criacao, u.dt_validade, u.valido FROM bd_ssm_login..usuario u INNER JOIN bd_ssm_login..usuario_empresa ue ON u.cd_usuario = ue.cd_usuario INNER JOIN perfil_usuario pu ON pu.cd_usuario != u.cd_usuario WHERE (ue.nm_empresa LIKE '%'+ @nm_empresa +'%' OR u.login LIKE '%'+ @nm_empresa +'%') -- AND ue.papel = 2 -- AND u.login like '%jbonatto%' -- AND u.cd_usuario = 28607 -- AND ue.cd_tusuario IN (170, 205) --PAPÉIS: --NENHUM(-1) --SUPORTE(0) --GESTOR(1) --VENDEDOR(2) --CLIENTE(3) --BACKOFFICE(4) --INTEGRADOR(5) -- 5º Substitua NULL pelo bd_ssm_login..cd_usuario escolhido em @cdUsuario_dog. o Script só executará se a variável @cdUsuario_dog estiver diferente de NULL DECLARE @cdUsuario_dog INT = NULL; -- Porque dog? Dog invertido fica god, que dá o sentido de god user. -- 6º Após os passos acima, verifique se as variáveis acima (@nm_empresa, @nm_new_perfil, @cdUsuario_dog) estão com os valores corretos. -- 7º Execute todo este script. Se estiver no Microsoft SQL Server Management Studio apenas pressione F5. -- Se tudo ocorrer bem você visualizará o usuário escolhido no último select resultante deste script. -- Após executá-lo não pare o script, pois isso pode gerar um processo travado/bloqueado. DECLARE @cd_perfil_already_exists INT = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil) BEGIN TRANSACTION BEGIN TRY IF (@cdUsuario_dog IS NOT NULL AND @nm_new_perfil IS NOT NULL AND @nm_new_perfil <> '' AND (SELECT DB_NAME()) = 'bd_ssm_' + @nm_empresa AND NOT EXISTS (SELECT TOP 1 1 FROM PERFIL_USUARIO WHERE CD_USUARIO = @cdUsuario_dog) ) BEGIN DECLARE @I INT = 1 DECLARE @cdPerfilChoosed INT; DECLARE @cdAcaoTemp INT; --Decidindo o perfil a ser usado IF(@cd_perfil_already_exists IS NULL) BEGIN INSERT INTO PERFIL( CD_PERFIL, NM_PERFIL ) VALUES ( (SELECT ISNULL((SELECT MAX(CD_PERFIL) FROM PERFIL), 1) + 1), @nm_new_perfil ) SET @cdPerfilChoosed = (SELECT CD_PERFIL FROM PERFIL WHERE NM_PERFIL = @nm_new_perfil) END ELSE BEGIN SET @cdPerfilChoosed = @cd_perfil_already_exists END --Vinculando usuário a um perfil INSERT INTO PERFIL_USUARIO (CD_PERFIL, CD_USUARIO) VALUES (@cdPerfilChoosed, @cdUsuario_dog) --Inserindo ações para o perfil escolhido DECLARE @acoes TABLE( CD_RANK INT, CD_ACAO INT ) ;WITH acoes AS( SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rk, CD_ACAO FROM BD_SSM_LOGIN..ACAO WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO <> 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO' ) INSERT INTO @acoes SELECT rk, CD_ACAO from acoes DECLARE @LENGHT INT = (SELECT count(*) FROM BD_SSM_LOGIN..ACAO WHERE ID_ACAO NOT LIKE '%OCULTA%' AND ID_ACAO <> 'HABILITAR_MULT_FILIAIS_ESTOQUE_PEDIDO') WHILE (@I < @LENGHT) BEGIN SET @cdAcaoTemp = (SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I) IF NOT EXISTS ((SELECT TOP 1 1 FROM ACAO_PERFIL WHERE CD_PERFIL = @cdPerfilChoosed AND CD_ACAO = @cdAcaoTemp)) BEGIN INSERT INTO ACAO_PERFIL(CD_ACAO, CD_PERFIL) VALUES ((SELECT CD_ACAO FROM @acoes WHERE CD_RANK = @I) , @cdPerfilChoosed) END SET @I += 1; END IF (SELECT salt FROM BD_SSM_LOGIN..USUARIO U where cd_usuario = @cdUsuario_dog) != 'PLAIN' BEGIN UPDATE bd_ssm_Login..usuario SET SALT = 'PLAIN', SENHA = @nm_new_perfil where cd_usuario = @cdUsuario_dog END SELECT 'Abaixo terá as informações de login EVO.' AS 'SEU GOD USER FOI CRIADO COM SUCESSO!' SELECT u.LOGIN, u.SENHA, u.SALT, U.CD_USUARIO, UE.CD_TUSUARIO, p.NM_PERFIL, * FROM BD_SSM_LOGIN..USUARIO U INNER JOIN bd_ssm_login..USUARIO_EMPRESA UE ON U.CD_USUARIO = UE.CD_USUARIO INNER JOIN PERFIL_USUARIO PU ON PU.CD_USUARIO = U.CD_USUARIO INNER JOIN PERFIL P ON P.CD_PERFIL = PU.CD_PERFIL WHERE u.CD_USUARIO = @cdUsuario_dog END ELSE BEGIN SELECT 'DADOS EQUIVOCADOS, BASE DIVERGENTE OU JÁ EXISTE ESTE USUÁRIO NA USUARIO_PERFIL' END COMMIT; END TRY BEGIN CATCH SELECT 'ROLLBACK, WE HAVE A PROBLEM -> ' + ERROR_MESSAGE() ROLLBACK END CATCH
- Script de auxílio para análise da aprovação de pendências no item do pedido
--Script de auxílio para análise da aprovação de pendências no item do pedido -- Preencha estas 2 variáveis DECLARE @cdPedidoPalm BIGINT = 200729124209337, @cdTUsuario INT = 168 DECLARE @cdGestor INT = (SELECT cd_supervisor FROM supervisor WHERE cd_usuario = @cdTUsuario) IF (@cdGestor IS NULL) BEGIN SELECT 'é necessário que o usuário seja um gestor/supervisor para aprovar pendências' RETURN END --Caso você queira analisar o retorno ou a própria procedure que simula o click do botão aprovar pendências ela está logo abaixo: --Analisando a procedure: --Utilize sp_helptext com os resultados em modo Texto(CTRL + T) no lugar do EXEC para analisar a procedure. --Ou melhor, vá em nome_da_sua_base --> Programação --> Procedimentos Armazenados --> dbo.PR_AUTORIZAR_PENDENCIA --> Botão direito Modificar --> comente a linha que começa com Alter para não alterar a procedure sem querer --Executando --CUIDADO: O Script logo abaixo possui uma linha que executa uma procedure com comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes. --INÍCIO --DECLARE @pendenciaPedido TP_PENDENCIA_PEDIDO; --INSERT INTO @pendenciaPedido ( -- cd_pedido_palm, -- cd_tipo_bloc, -- cd_usuario, -- cd_gestor --) --SELECT -- @cdPedidoPalm, -- tbpr.cd_tipo_bloc, -- @cdTUsuario AS cd_usuario, -- @cdGestor AS cd_gestor --from PEDIDO P --INNER JOIN tipo_bloc_pedido_rel tbpr WITH(NOLOCK) ON tbpr.cd_pedido_palm = P.cd_pedido_palm --INNER JOIN tipo_bloc_pedido_sit tbps WITH (NOLOCK) ON tbps.cd_tipo_bloc = tbpr.cd_tipo_bloc --CUIDADO_2: O Script logo abaixo possui comandos DML e sua execução realmente aprovará o pedido caso o usuário tenha tudo nos conformes. -- -- EXEC PR_AUTORIZAR_PENDENCIA @pendenciaPedido --FIM --PENDENCIAS_AUTORIZADAS(1) --PEDIDO_AUTORIZADO(2) --SEM_ALCADA_JULGAR_PENDENCIA(3) --PENDENCIA_JA_JULGADA(4) --PEDIDO_CANCELADO(5) --Caso o número retornado não esteja entre estes acima é porque esta funcionalidade sofreu alteração, logo, parte deste script poderá não ser mais útil. --Se você reconhecer que o retorno do NuPortal ou da Procedure for (3) 'SEM_ALCADA_JULGAR_PENDENCIA', você pode analisar o porquê deste retorno com as instruções abaixo: --Analisando o porquê do retorno SEM_ALCADA_JULGAR_PENDENCIA(3) DECLARE @nrItemPedido BIGINT = 3 --Verificando se o usuário pode aprovar a pendência do item via função. Essa --SELECT [dbo].[FN_AUTORIZA_ITEM_PEDIDO_PENDENTE] (@cdPedidoPalm, @nrItemPedido, @cdGestor) --Conteúdo da função, se por ventura você não pode simplemente executá-la e/ou quer entender melhor o que está acontecendo nela --Obs: Ele utiliza as variáveis declaradas lá em cima: --INÍCIO DECLARE @aprovavel CHAR(1) SELECT TMP.id_tipo_pedido, CASE WHEN TMP.id_tipo_pedido = 'BS' THEN CASE WHEN ( (VPAPP.percentual_acrescimo_saldo <= VAP.pct_desc_original OR (VPAPP.percentual_acrescimo_saldo IS NOT NULL AND VAP.pct_desc_original = 100) ) AND ISNULL(VAP.pct_desc_min,0) <= VPAPP.percentual_acrescimo_saldo ) THEN 'S' ELSE 'N' END WHEN TMP.id_tipo_pedido = 'BO' THEN CASE WHEN ((TMP.id_tipo_pedido = 'BO' AND VSV.nivel_supervisor = 0) OR NOT (ISNULL(IPD.id_autorizado, 'S') = 'N') OR NOT (VPAPP.cd_pedido_palm_pai IS NOT NULL AND VPAPP.cd_pedido_palm_pai = VPAPP.cd_pedido_palm) OR NOT (VPAPP.cd_pedido_palm IS NOT NULL AND VPAPP.cd_pedido_palm = P.cd_pedido_palm) OR NOT (IPD.pr_desconto_aplicado IS NULL OR IPD.pr_desconto_aplicado = 0)) THEN 'S' ELSE 'N' END WHEN TMP.id_tipo_pedido <> 'BO' AND TMP.id_tipo_pedido <> 'BS' THEN CASE WHEN (IPD.pr_desconto_aplicado <= VAP.pct_desc OR AA.pct_desc = 100 ) THEN 'S' ELSE 'N' END END AS 'O usuário pode aprovar' FROM pedido P WITH (NOLOCK) INNER JOIN view_supervisor_vendedor VSV ON (P.cd_vendedor = VSV.cd_vendedor AND VSV.cd_supervisor = @cdGestor) INNER JOIN (SELECT cd_vendedor, nm_vendedor FROM vendedor WITH (NOLOCK)) V ON P.cd_vendedor = V.cd_vendedor INNER JOIN (SELECT id_tipo_pedido, cd_tipo, ds_tipo, id_calcula_impostos FROM tipo_movimento_pedido WITH (NOLOCK)) TMP on (P.cd_tipo_pedido = TMP.cd_tipo) INNER JOIN item_preco_tabela_desconto_aplicado IPD ON P.cd_pedido_palm = IPD.cd_pedido_palm AND IPD.nr_item_pedido = @nrItemPedido INNER JOIN (SELECT cd_pedido_palm, nr_item_pedido, id_autorizado,cd_produto FROM item_pedido WITH (NOLOCK) ) I ON ((IPD.cd_pedido_palm = I.cd_pedido_palm) AND (IPD.nr_item_pedido = I.nr_item_pedido)) INNER JOIN (SELECT cd_produto, nm_produto, ps_produto_kg, vr_max_pc_desconto FROM produto WITH (NOLOCK)) PR ON I.cd_produto = PR.cd_produto -- verificar se o getor tem alçada de preço para aprovar o item pedido INNER JOIN usuario_alcada UA ON VSV.cd_supervisor = UA.cd_usuario INNER JOIN alcada_autorizacao AA ON UA.cd_alcada = AA.cd_alcada INNER JOIN view_alcada_produto VAP ON (IPD.cd_produto = VAP.cd_produto AND VAP.cd_alcada = AA.cd_alcada) -- verificar se o getor tem alçada de pendencia para aprovar o item pedido INNER JOIN (SELECT cd_pedido_palm, nr_item_pedido, cd_tipo_bloc, id_status FROM item_pedido_pendente WITH(NOLOCK)) IPP ON IPD.cd_pedido_palm = IPP.cd_pedido_palm AND IPD.nr_item_pedido = IPP.nr_item_pedido AND ISNULL(IPP.ID_STATUS, 'S') = 'P' INNER JOIN alcada_tipo_bloc ATB WITH(NOLOCK) ON IPP.cd_tipo_bloc = ATB.cd_tipo_bloc INNER JOIN usuario_alcada_aprovacao UAA WITH(NOLOCK) ON UAA.cd_alcada = ATB.cd_alcada AND IPP.cd_tipo_bloc = ATB.CD_TIPO_BLOC AND UAA.cd_usuario = (SELECT cd_usuario FROM supervisor WHERE cd_supervisor = @cdGestor) LEFT JOIN view_percentual_acrescimo_pedido_pai VPAPP WITH (NOLOCK) ON P.cd_pedido_palm = VPAPP.cd_pedido_palm WHERE ISNULL(P.id_efetivado, 'S') = 'S' AND ((ISNULL(P.id_autorizado, 'S') = 'N') OR TMP.id_tipo_pedido = 'BS') AND (ISNULL(IPD.id_autorizado, 'S') = 'N') AND (@cdPedidoPalm IS NULL OR P.cd_pedido_palm = @cdPedidoPalm) SELECT @aprovavel --FIM
- Limpar base pesada para teste
DBCC SHRINKDATABASE('bd_ssm_makitarenatolima', 0) SELECT 'TRUNCATE TABLE ' + name FROM sys.tables where name like 'LOG_%' and name not in ('LOG_IMPORTACAO', 'LOG_GPS', 'LOG_ID', 'LOG_CLOUD_SERVER', 'LOG_SERVER_CLOUD', 'LOG_ACAO', 'LOG_PEDIDO_AUTO')
- Verificar a quantidade de dados sujos nas bases
select 'SELECT COUNT(*), '''+ name + ''' FROM '+ name + ' WITH (NOLOCK) where data_delete is not null UNION ALL' from sys.tables where name like '%_001' order by name asc;
- PEGAR OS USUARIOS DE UMA BASE DE PRODUÇÃO E CADASTRAR UMA CÓPIA DELES PARA UMA BASE DE BACKUP MANTENDO TODAS AS CONFIGURAÇÕES
use bd_ssm_login; select ue.* from bd_ssm_login..usuario_empresa ue inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%' select u.CD_USUARIO from bd_ssm_login..usuario_empresa ue inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%' select pu.*, ue.*, CAST(u.CD_USUARIO AS VARCHAR(10)) + '-' + NM_EMPRESA from bd_ssm_login..usuario_empresa ue inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario inner join bd_ssm_montanahomologmobile..perfil_usuario pu on u.CD_USUARIO = pu.cd_usuario where nm_empresa like '%montana'; go INSERT INTO USUARIO SELECT /*u.CD_USUARIO,*/u.NOME,u.LOGIN + 'homo',u.EMAIL,u.SENHA,u.SALT,u.TELEFONE,u.CD_USUARIO,u.VALIDO,u.DT_VALIDADE,u.DT_CRIACAO,u.URL_FOTO,u.DELTA_ITERACOES from bd_ssm_login..usuario_empresa ue inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like 'montana' -- numero_violações INSERT INTO USUARIO_EMPRESA select u.CD_USUARIO, ue.CD_TUSUARIO,ue.NM_EMPRESA + 'homologmobile',ue.VALIDO,ue.DT_VALIDADE,ue.DT_CRIACAO,ue.PAPEL from bd_ssm_login..usuario_empresa ue inner join bd_ssm_login..usuario u on ue.cd_usuario = u.NUMERO_VIOLACOES where nm_empresa like 'montana' UPDATE bd_ssm_montanahomologmobile..PERFIL_USUARIO SET bd_ssm_montanahomologmobile..PERFIL_USUARIO.CD_USUARIO = U.CD_USUARIO FROM USUARIO AS U INNER JOIN bd_ssm_montanahomologmobile..PERFIL_USUARIO AS PU ON U.NUMERO_VIOLACOES = PU.CD_USUARIO SELECT * FROM bd_ssm_montanahomologmobile..PERFIL_USUARIO PU INNER JOIN USUARIO U ON U.NUMERO_VIOLACOES = PU.CD_USUARIO select ue.*, u.* from bd_ssm_login..usuario_empresa ue inner join bd_ssm_login..usuario u on u.cd_usuario = ue.cd_usuario where nm_empresa like '%montanahomologmobile%' UPDATE USUARIO SET SENHA = 'GILGAMESH', SALT = 'PLAIN' where CD_USUARIO = 12780 UPDATE USUARIO SET SENHA = '06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4=', SALT = 'c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6' where CD_USUARIO = 12780 -- 06sCa+PtuytyYt4+QfRyiWyluxm8dTlJbs9qK4p/5u4= c220c3e5-75fe-4c4f-a89a-4cc0920c4bc6
- Verifiar duplicações de vinculações de cadastros nas bases
--VER SE EXISTE UM USUÁRIO VINCULADO A MAIS DE UM REGISTRO select count(*), tu.cd_usuario from tusuario tu left join DADOS_VENDEDOR dv on dv.CD_USUARIO_SEGURANCA = tu.CD_USUARIO left join SUPERVISOR s on S.CD_USUARIO = tu.CD_USUARIO where tu.CD_SITUACAO not in (2) group by tu.cd_usuario ORDER BY 1 DESC --VER SE EXISTEM USUARIOS COM MESMO LOGIN select count(*), tu.NM_GUERRA from tusuario tu where tu.CD_SITUACAO not in (2) group by tu.NM_GUERRA ORDER BY 1 DESC --VER SE EXISTEM USUARIOS COM MESMO CÓDIGO select count(*), tu.CD_USUARIO from tusuario tu where tu.CD_SITUACAO not in (2) group by tu.CD_USUARIO ORDER BY 1 DESC