A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SUP402 Abandonando a sysprocesses Bem-vindo às DMV’s

Apresentações semelhantes


Apresentação em tema: "SUP402 Abandonando a sysprocesses Bem-vindo às DMV’s"— Transcrição da apresentação:

1

2 SUP402 Abandonando a sysprocesses Bem-vindo às DMV’s
4/14/2017 6:41 AM SUP402 Abandonando a sysprocesses Bem-vindo às DMV’s Fabio Gentile Renata Festa Microsoft Premier Field Engineers Apresentacao Site R © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

3 PFE Premier Field Engineering http://careers.microsoft.com/ G
Serviços Proativos Serviços Reativos Workshop Plus Health Checks & RAPs Situações Críticas G

4 Agenda Introdução Como provar inocência?
Por que abandonar a sysprocesses? O que são DMVs e DMFs? Prós e Contras Categorias DMVs x sysprocesses Somente nas DMVs! Provando inocência DMVs com SQL2K8 R2 SP1 Outras DMVs úteis O que iremos falar hoje Vamos comecar então pelo motivo de ter escolhido esse tema G

5 Introdução O sistema está lento… Sempre funcionou… Nada foi alterado…
O problema está no banco! DBA - “Default Blame Acceptor” Motivo de ter escolhido o tema DBAs sempre tem que provar a inocência Maior parte dos clientes hoje não utiliza todos os recursos possíveis para auxiliar no diagnóstico Link Slide: Vc é o culpado. Como provar que o problema é outro? Summary of why DBA Skills are necessary necessary.aspx You are a DBA R

6 Como provar inocência? Testar Implantar Monitorar Otimizar
Troubleshooting Se vc efetua todos esses passo, fica muito simples e vc identificar o problema rapidamente. Se vc não efetua esses passos, vc não sabe nem por onde começar… Link Slide: ok, por onde eu começo? R

7 Como provar inocência? Diagnóstico: CPU Memória I/O Rede Estatísticas
Tempdb Plano de execução Índices Concorrência Por não ter baseline ou monitoracao eficiente, são diversas as variáveis a se trabalhar e não sabe nem por onde começar! Sysprocesses? Trace? Como fazer esses diagnósticos mais facilmente com o auxilio das DMVs? Link Slide: Pq a sysprocesses não te ajuda tanto R

8 Por que abandonar a sysprocesses?
Será removida numa versão futura do SQL Server (pós-Denali) Mantida apenas para compatibilidade com versões anteriores DMVs e DMFs oferecem muito mais informação Link slide: o que são DMVs e DMFs? G

9 O que são DMVs e DMFs? Dynamic Management Object
Dynamic Management View Dynamic Management Function SQL Server 2005 e versões posteriores Server scoped Database scoped Conceito introduzido no 2005 – Dynamic Management Objects **recicla quando serviço do SQL Server é reinicializado. Boa parte delas são cumulativos Link Slide: vantagens e desvantagens Dynamic management views and functions return server state information that can be used to monitor the health of a server instance, diagnose problems, and tune performance. There are two types of dynamic management views and functions: Server-scoped dynamic management views and functions. These require VIEW SERVER STATE permission on the server. Database-scoped dynamic management views and functions. These require VIEW DATABASE STATE permission on the database. Contras: Dynamic management views and functions return internal, implementation-specific state data. Their schemas and the data they return may change in future releases of SQL Server. Therefore, dynamic management views and functions in future releases may not be compatible with the dynamic management views and functions in this release. For example, in future releases of SQL Server, Microsoft may augment the definition of any dynamic management view by adding columns to the end of the column list. We recommend against using the syntax SELECT * FROM dynamic_management_view_name in production code because the number of columns returned might change and break your application. G

10 DMVs e DMFs - Prós Informação pontual Baixo impacto Informação útil:
Missing indexes Top Waits Queries mais custosas G

11 DMVs e DMFs - Contras Dados não persistem após restart
Deltas para comparação Queries podem ser complexas Link Slide: vamos ver algumas DMVs e DMFs G

12 Dynamic Management Object
dm_exec_query_memory_grants, dm_exec_query_optimizer_info, dm_exec_query_plan, dm_exec_query_resource_semaphores, dm_io_pending_io_requests, dm_io_virtual_file_stats, dm_os_buffer_descriptors, dm_os_child_instances, dm_os_cluster_nodes, dm_db_index_usage_stats, dm_db_mirroring_auto_page_repair, dm_db_mirroring_connections, dm_db_mirroring_past_actions, dm_os_memory_allocations, dm_os_memory_brokers, dm_os_memory_cache_clock_hands, dm_os_memory_cache_counters, dm_os_memory_node_access_stats, dm_os_memory_nodes, dm_os_memory_objects, dm_os_memory_pools, dm_os_nodes, dm_fts_outstanding_batches, dm_fts_parser, dm_fts_population_ranges, dm_io_backup_tapes, dm_io_cluster_shared_drives, dm_server_audit_status, dm_sql_referenced_entities, dm_sql_referencing_entities, dm_resource_governor_resource_pools, dm_tran_session_transactions, dm_tran_top_version_generators, dm_tran_transactions_snapshot, dm_tran_version_store, dm_clr_appdomains dm_clr_loaded_assemblies, dm_clr_properties, dm_clr_tasks, dm_cryptographic_provider_algorithms, dm_os_performance_counters, dm_os_process_memory, dm_os_ring_buffers, dm_os_schedulers, dm_os_spinlock_stats, dm_db_missing_index_details, dm_db_missing_index_group_stats, dm_db_missing_index_groups, dm_db_partition_stats, dm_exec_cached_plans, dm_exec_connections, dm_exec_cursors, dm_exec_plan_attributes, dm_exec_procedure_stats, dm_database_encryption_keys, dm_db_file_space_usage, dm_db_index_operational_stats, dm_db_index_physical_stats, dm_exec_query_stats, dm_exec_query_transformation_stats, dm_exec_requests, dm_exec_sessions, dm_exec_sql_text, dm_os_threads, dm_tran_active_snapshot_database_transactions, dm_tran_active_transactions, dm_tran_commit_table, dm_os_virtual_address_dump, dm_os_wait_stats, dm_os_waiting_tasks, dm_os_worker_local_storage, dm_os_workers, dm_exec_background_job_queue, dm_exec_background_job_queue_stats, dm_exec_cached_plan_dependent_objects, dm_xe_session_events, dm_xe_session_object_columns, dm_xe_session_targets, dm_xe_sessions, dm_audit_actions, dm_resource_governor_workload_groups, dm_exec_text_query_plan, dm_exec_trigger_stats, dm_exec_xml_handles, dm_os_memory_cache_entries, dm_os_memory_cache_hash_tables, dm_os_memory_clerks, dm_qn_subscriptions, dm_fts_index_keywords_by_document, dm_fts_index_population, dm_fts_memory_buffers, dm_fts_memory_pools, dm_audit_class_type_map, dm_broker_activated_tasks, dm_broker_connections, dm_db_missing_index_columns, dm_os_loaded_modules, dm_os_stacks, dm_os_sublatches, dm_os_sys_info, dm_os_sys_memory, dm_os_tasks, dm_xe_map_values, dm_xe_object_columns, dm_xe_objects, dm_xe_packages, dm_xe_session_event_actions, dm_repl_articles, dm_repl_schemas, dm_repl_tranhash, dm_repl_traninfo, dm_resource_governor_configuration, dm_db_persisted_sku_features, dm_db_script_level, dm_db_session_space_usage, dm_db_task_space_usage, dm_cryptographic_provider_keys, dm_cryptographic_provider_properties, dm_cryptographic_provider_sessions, dm_broker_forwarded_messages, dm_broker_queue_monitors, dm_cdc_errors, dm_cdc_log_scan_sessions, dm_fts_index_keywords, dm_os_dispatcher_pools, dm_os_dispatchers, dm_os_hosts, dm_os_latch_stats, dm_tran_current_snapshot, dm_tran_current_transaction, dm_tran_database_transactions, dm_tran_locks, dm_filestream_file_io_handles, dm_filestream_file_io_requests, dm_fts_active_catalogs, dm_fts_fdhosts Bom, aqui nós temos as DMVs e DMFs existentes e iremos falar um pouco sobre cada uma delas.. Brincadeira  Link Slide: Para facilitar, vamos separar por categoria R

13 Categorias Database Database Mirroring Service Broker
Resource Governor Index Execution Transaction CLR Change Data Capture SQL Operating System Extended Events Replication Query Notifications Security Full-Text Search Objects I/O Cada uma com um proposito especifico Nomes das dmvs em geral são os nomes das categorias. Se vc esta tendo um problema de performance ou um outro problema especifico, utilize as DMVs referentes a essa categori, facilitando assim a análise. Link Slide: como o objetivo aqui é mostramos formas eficientes de se substituir a sysprocesses, iremos então ver um pouco mais a fundo a categoria Execution Change Data Capture: dm_cdc CLR: dm_clr Database Mirroring: dm_db_mirroring Database: dm_db Execution: dm_exec Extended Events: dm_xe Full-Text Search: dm_fts I/O: dm_io Index: db_db_index ou dm_db_missing_index Objects: dm_sql Query Notifications: dm_qn Replication: dm_repl Resource Governor: dm_resource_governor Security: dm_* (audit, cryptographic, ...) Service Broker: dm_broker SQL Operating System (SQLOS) : dm_os Transaction: dm_tran -- todas DMV e DMFs existentes SELECT [name], [type], type_desc FROM sys.system_objects WHERE NAME LIKE ‘dm%’ ORDER BY [name] R

14 DMVs x sysprocesses sys.dm_exec_connections sys.dm_exec_sessions
sys.dm_exec_requests Na categoria execution, encontramos as DMVs … que substituem a sysprocesses. Gancho: vamos ver um pouco mais como elas funcionam na teoria e depois, na prática R

15 sys.dm_exec_connections
DMVs x sysprocesses sys.dm_exec_connections Na sysprocesses, essas informações ficavam todas misturadas, além de não possuir informações importantes como plano de execução e o comando que estava sendo executado no momento. sys.dm_exec_connections Uma linha para cada conexão com a instância do SQL Server Conexão identificada como connection_id Cada cliente tem pelo menos uma conexão física Conexões de sistema não são relacionadas 2. sys.dm_exec_sessions Uma linha para cada sessão (session_id) Uma sessão é estabelecida quando o login é validado Uma sessão para cada conexão com a instância do SQL Server Sessões de sistema são identificadas: is_user_process 3. sys.dm_exec_requests Informações sobre requisições ativas Grande parte das informações obtidas na sysprocesses Uma requisição para cada sessão Campos sql_handle, plan_handle, query_hash, query_plan_hash sys.dm_exec_sessions sys.dm_exec_requests R

16 demo DMVs x sysprocesses G 4/14/2017 6:41 AM
Demo mostrando as principais diferenças entre a sysprocesses e as DMVs. Focar em campos e informações novas que não existem na sysprocesses Mostrar os campos sql_handle e plan_handle, mas ainda não em XML. Gancho: não seria interessante conseguirmos os comandos que estão sendo executados e o plano de execução? -- sys.dm_exec_connections SELECT ec.session_id, ec.connect_time, ec.last_read, ec.last_write, ec.auth_scheme, ec.num_reads, ec.num_writes FROM sys.dm_exec_connections ec -- sys.dm_exec_sessions SELECT es.session_id, es.status,es.cpu_time, es.reads, es.logical_reads, es.writes, es.row_count, es.login_name, es.program_name, es.host_name, es.last_request_start_time, es.last_request_end_time FROM sys.dm_exec_sessions es WHERE is_user_process = 1 -- sys.dm_exec_requests SELECT er.session_id, er.blocking_session_id, er.cpu_time, er.reads, er.logical_reads, er.writes, er.row_count, db_name(er.database_id) dbname, er.wait_type, er.wait_time, er.wait_resource, er.percent_complete, er.estimated_completion_time, er.sql_handle, er.plan_handle FROM sys.dm_exec_requests er WHERE er.session_id > 50 -- sysprocesses SELECT * FROM sysprocesses sp WHERE sp.spid > 50 -- juncao das 3 DMVs em comparacao com a sysprocesses SELECT ec.session_id, es.cpu_time, er.blocking_session_id, er.reads, er.logical_reads, er.writes, er.row_count, db_name(er.database_id) dbname, er.wait_type, er.wait_time, er.wait_resource, er.percent_complete, er.estimated_completion_time, ec.connect_time, ec.last_read, ec.last_write, er.sql_handle, er.plan_handle JOIN sys.dm_exec_sessions es ON ec.session_id = es.session_id JOIN sys.dm_exec_requests er ON ec.connection_id = er.connection_id demo G © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

17 Somente nas DMVs! sys.dm_exec_sql_text Retorna o comando da batch
Substitui a função fn_get_sql R

18 Somente nas DMVs! sys.dm_exec_query_plan Plano de execução em XML
O plano pode estar em cache ou executando R

19 Identificando as queries e seus planos de execução
4/14/2017 6:41 AM Identificando as queries e seus planos de execução -- sys.dm_exec_requests SELECT er.session_id, DB_NAME(er.database_id) dbname, er.blocking_session_id, er.wait_type, er.wait_time, er.start_time, er.reads, er.writes, er.logical_reads, er.row_count FROM sys.dm_exec_requests AS er WHERE er.session_id > 50 -- sys.dm_exec_requests com sys.dm_exec_sql_text para ver o comando executado SELECT er.session_id, DB_NAME(er.database_id) dbname, er.blocking_session_id, er.wait_type, er.wait_time, er.start_time, er.reads, er.writes, er.logical_reads, er.row_count, et.text CROSS APPLY sys.dm_exec_sql_text (er.sql_handle) et -- sys.dm_exec_requests com sys.dm_exec_sql_text (para ver o comando executado) e sys.dm_exec_query_plan (ver plano de execucao XML) SELECT er.session_id, DB_NAME(er.database_id) dbname, er.blocking_session_id, er.wait_type, er.wait_time, er.start_time, er.reads, er.writes, er.logical_reads, er.row_count, et.text, ep.query_plan CROSS APPLY sys.dm_exec_query_plan (er.plan_handle) ep -- agregando com demais DMVs exec para outros campos SELECT ec.session_id, es.cpu_time, er.blocking_session_id, er.reads, er.logical_reads, er.writes, er.row_count, db_name(er.database_id) dbname, er.wait_type, er.wait_time, er.wait_resource, er.percent_complete, er.estimated_completion_time, ec.connect_time, ec.last_read, ec.last_write, ep.query_plan, et.text FROM sys.dm_exec_connections ec JOIN sys.dm_exec_sessions es ON ec.session_id = es.session_id JOIN sys.dm_exec_requests er ON ec.connection_id = er.connection_id -- mostrar as DMVs abaixo tb! sys.dm_exec_query_stats sys.dm_exec_procedure_stats demo G © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

20 Provando a inocência sys.dm_os_waiting_tasks sys.dm_os_wait_stats
Tarefas aguardando Contenção atual sys.dm_os_wait_stats Tarefas finalizadas Contenção histórica Ok, sei olhar os waits, capturar plano de execucao, etc. Como faço o diagnostico da lentidao? R

21 Provando a inocência sys.dm_exec_query_stats e sys.dm_exec_procedure_stats Execução \ Consumo Performance dos planos em cache Plano removido do cache, removido das DMVs também R

22 Provando a inocência (ou não)
4/14/2017 6:41 AM Provando a inocência (ou não) Fazer o diagnostico de problemas através de DMVs. Verificar contencao de CPU, memoria, IO, rede, plano ruim, etc etc.. Exemplificar um trobleshooting de performance através de DMV, chegando na query ( ou outro motivo) causador do problema Nem sempre a causa é CPU 100%... demo G © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

23 DMVs com SQL2K8 R2 SP1 4 novas colunas na sys.dm_exec_query_stats
Total_rows Last_rows Min_rows Max_rows G

24 DMVs com SQL2K8 R2 SP1 sys.dm_os_volume_stats (f.database_id, f.file_id) sys.dm_os_windows_info sys.dm_server_registry sys.dm_server_memory_dumps sys.dm_server_services G

25 Mudanças nas DMVs com o SQL2K8 R2 SP1
4/14/2017 6:41 AM Mudanças nas DMVs com o SQL2K8 R2 SP1 Gentile Se vc nao tiver 2008 r2 sp1 na sua maquina, irei tirar esse slide de DEMO, daí só comentamos sobre essas DMVs, ok? demo G © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

26 Outras DMVs úteis sys.dm_db_index_physical_stats
sys.dm_db_index_usage_stats sys.dm_db_missing_index_* sys.dm_exec_trigger_stats sys.dm_exec_cached_plans sys.dm_tran_locks R

27 Conclusão Abandone a sysprocesses, antes que ela te abandone! (pós-Denali) DMVs e DMFs Monitorar Problemas de performance Outras funcionalidades SQL Server: Extended Events (XEvents) Data Collector Activity Monitor R

28 Tech Ed North America 2010 4/14/2017 6:41 AM Conteúdo Relacionado Dynamic Management Functions and Views (Transact-SQL) Troubleshooting Performance Problems in SQL Server 2008 Plan Caching in SQL Server 2008 More on DMV changes in SQL 2008 R2 SP1 Advanced Troubleshooting with Extended Events © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

29 Palestras Relacionadas
Tech Ed North America 2010 4/14/2017 6:41 AM Palestras Relacionadas DBP305 | Recursos de Gerenciamento do SQL Server QS13 | Query Tuning - Analisando Planos de Execução no SQL Server SUP408 | Identificando e resolvendo problemas de performance com Microsoft Visual Studio Ultimate SUP407 | Monitorando e diagnosticando problemas em produção de aplicações .Net com AVICode DBP401 | Raio-X do SQL Server: Arquitetura Interna do gerenciador de Banco de Dados © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

30 Recursos para Desenvolvedores
Tech Ed North America 2010 4/14/2017 6:41 AM Recursos Recursos para IT Pros Recursos para Desenvolvedores © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

31 Não esqueça de preencher sua avaliação online
Tech Ed North America 2010 4/14/2017 6:41 AM Obrigatorio Não esqueça de preencher sua avaliação online © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

32 4/14/2017 6:41 AM © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


Carregar ppt "SUP402 Abandonando a sysprocesses Bem-vindo às DMV’s"

Apresentações semelhantes


Anúncios Google