Foi um dos melhores momentos no keynote do 3o. dia,,,
[youtube=http://www.youtube.com/watch?v=ST-JmMc7R9U]
pra quem quer acompanhar a música com a letra:
[youtube=http://www.youtube.com/watch?v=vsafOonKs8I]
Foi um dos melhores momentos no keynote do 3o. dia,,,
[youtube=http://www.youtube.com/watch?v=ST-JmMc7R9U]
pra quem quer acompanhar a música com a letra:
[youtube=http://www.youtube.com/watch?v=vsafOonKs8I]
Administro um ambiente que tem +/- 120 usuários de SQL,,, e dentro de uma das bases do ambiente tem uns 70 usuários, com permissões diferentes em objetos diferentes…
Eu precisava de algum script para mapear aquelas peculiaridades de alguém ter permissão de execute em uma proc,,, e select em outra tabela,,, ou quando alguém tem deny em uma view… mais por questão de documentação e ter uma baseline quando alguém faz alguma alteração de proc apagando e criando ao invés de dar alter com isso perdendo as permissões…
ai saiu um scrip mais ou menos assim:
SELECT prmssn.permission_name AS [Permission], sp.type_desc, sp.name, grantor_principal.name AS [Grantor], grantee_principal.name AS [Grantee] FROM sys.all_objects AS sp INNER JOIN sys.database_permissions AS prmssn ON prmssn.major_id=sp.object_id AND prmssn.minor_id=0 AND prmssn.class=1 INNER JOIN sys.database_principals AS grantor_principal ON grantor_principal.principal_id = prmssn.grantor_principal_id INNER JOIN sys.database_principals AS grantee_principal ON grantee_principal.principal_id = prmssn.grantee_principal_id WHERE (SCHEMA_NAME(sp.schema_id)='dbo') ORDER BY sp.type go |
ATUALIZAÇÃO – 06/12/2011
Existe também o sp_helprotect, ele faz basicamente a mesma coisa que o script acima. Você pode colocar o objeto na frente da proc e vai ter a lista de usuários com permissão naquele objeto, ou, apenas executar a proc e ela vai trazer a lista de permissões de todos os usuários em todos os objetos.
08h10 – Hoje é o kilt day,,,,
08h18 – Hoje tem um monte de agradecimento para as pessoas que ajudam o evento a ser realizado
08h25 – O Pessoal apresentou um vídeo sobre as qualidades mais interessante para as pessoas sobre o sql,,, muitas das pessoas são de instituições bancárias,,,,
08h30 – O VP está falando sobre as novidades do SQL Server 2012, começou falando sobre as novidades de alta disponibilidade, que por sinal realmente é bem interessante
Agora o VP da MSC está falando sobre a utilização deles do SQL, comentando a necessidades deles de nunca poder parar de acessar os dados.
08h40 – O pessoal esta mostrando como configurar o modo Always-On do SQL 2012,,, isso é simplesmente muito bom,,,,
08h53 – Até que enfim alguém está fazendo exemplos sem usar Excel,,, e pra ajudar a mina vira e manda uma: “Da pra fazer pelo GUI, mas sou da velha guarda, então olhem o código aqui,,,”
09h00 – Agora vamos ver o appliance com SQL,,, um hardware tunado para rodar banco,,,, só banco,,,, e mais nada além de banco,,,, isso é um sonho? SQL Server Parallel Data warehouse,,,, agora não é só HP,,, a DELL também tem hardware pra isso,,, é uma pena que isso, se um dia chegar ao Brasil, vai ser muito caro,,,,
09h16 – Anuncio do driver de ODBC para linux,,,, já que tem um monte de gente desenvolvendo para linux, pelo menos acessem uma base decente sem usar a droga do jdbc,,,
09h30 – trouxemos a chuva para Seattle,,, afinal,,, muito SQL Azure da nisso,,,,
09h40 – O pessoal anunciou que o SQL Azure vai aceitar bases até 150gb,,, e em qualquer collation,,, vamos ver se ele começa a fazer alguma sombra no Brasil,,,
11/10/11 – Fizemos o checkin do evento,,, como começo a ficar de costume, nos meus brindes veio faltando alguma coisa,,, no voo foi o fone de ouvido,,, daqui foi a cordinha para o crachá.
12/10/11 – Chegamos no evento,,, um monte de gente,,, já na escada rolante escuramos alguns brasileiros,,,
08h13 – muita gente no salão para o keynote,,, esse pessoal é muito estranho,,, só sabem falar inglês,,, q coisa chata,,, uahuahauhauha e nada de começar….
08h17 – começa com um video de pessoas falando sobre o significado do evento,,,
08h19 – apareceu o presidente do SQLPASS (Rushabh Mehta),,, ele está falando sobre a comunidade,,, mostrando quem faz parte do border,,, ele disse que o twitter está acima da capacidade,,, alguém precisa dizer pra ele que o wireless daqui não está aguentando a quantidade de gente,,,
08h27 – 189 seções, 204 palestrantes,,, e muita gente,,, no folheto dentro da mala mostra onde estão as salas interessantes,,, e qual o nível do treinamento,,,,
08h36 – basicamente uma explicação do evento,,, até que foi legal…
08h37 – Agora o Sr. vice presidente de produtos MS, Ted Kummert,,,
08h39 – The New World of Data, Ted Kummert está falando sobre que a menina dos olhos é Cloud,,, até aí,,, qual a novidade?,,
08h42 – 400k horas, 79k membros, 300 mvps,,, é coisa de gente grande,,,,
08h45 – Ted Kummert, está falando sobre os 3 pilares do SQL Server Denali.
08h50 – Agora o SQL Server Denali tem um nome oficial,,, SQL Server 2012 (esse pessoal é muito criativo,,,) e pelo que ele disse vai ser lançado no começo do ano que vem (isso vai ser uma grande novidade)
08h57 – Vamos ter outra versão do Azure até o final do ano,,, com novos tipos de dados….
09h07 – Denny Lee está demonstrando algumas novas consultas usando como exemplo o excel…
09h13 – Agora tem um pouco de SQL Azure labs…. vamos ver que zona vai sair disso,,,
09h18 – Mais exemplos com excel,,,, nós já sabemos que podemos extrair muitos dados, gerar relatórios e fazer uma festa com o excel acessando SQL,,, mas poxa, não viemos até aqui pra brincar com Excel,,, quero ver SQL,,,
09h26 – Agora pra que estudar para BI? qualquer criança que conheça um pouquinho de excel vai conseguir fazer qualquer coisa com acesso aos dados,,, até que não é ruim,,, o problema é que essa liberdade para o usuário, que na maior parte das vezes toma piau pra conseguir mandar um email, pode gerar mais dificuldades do que facilidades… O usuário tem que aprender a saber o que quer antes de ter a liberdade de acessar o que ele quer,,,, sem treinamento isso pode se tornar mais em problema do que liberdade,,,
09h37 – Amir Nets faz umas apresentações muito boas…. as apresentações de BI dele são muito boas…
09h55 bem no final da apresentação do Amir Netz, o tablet não consegue conectar na internet,,, e para tora a apresentação,,, uhauhauhaua, vir em uma apresentação com produtos MS e ela não ter problema? não tem graça,,,
09h57 – fim do keynote,,, agora vamos ver as outras coisas,,,
Estava revirando uns arquivos no meu HD externo e achei um programa muito legal para
conexão ODBC.
Antes de falar do programa,,, a historinha…
Conheci uma vez uma empresa que o pessoal não deixava acessar o servidor com SQL por TS nem SSMS,,,
Perguntei pra eles como eu iria ajudar a identificar os problemas se não podia fazer muita coisa… me explicaram que era política da empresa, eu poderia acessar de qualquer outra forma, mas não poderia conectar meu note da rede nem instalar qualquer aplicativo na estação…
Foi com essa necessidade que conheci o ODBC QueryTool,,, ele é um programinha bem legal… de graça e funciona sem precisar instalar nada…
Você pode usar uma conexão existente de ODBC ou criar uma na hora…
Como um quebra-galho para esse tipo de situação,,, acho que ele server para dar uma ajuda…
Você pode usar ele também para testar as conexões das estações cliente, com as restrições de usuário, restrições do SQL,,,
configurando o ODBC com as devidas informações, eu mostrei para um cliente como a aplicação iria se comportar com o fail-over das bases mirror.
Você pode baixar no site do SourceForge, ou no meu Skydrive, esse é um dos programas que vale a pena ter no pendrive.
Para o pessoal não ficar corrido entre escrever uns posts meia boca e se preocupar com os preparativos para o SQLPASS, o pessoal resolveu dar uma adiantada no T-SQL Tuesday desse mês,,,
Este mês ele é hospedado por Stuart Ainsworth (Blog | Twitter) e fala sobre joins..
Quer saber mais sobre Joins?
Vamos lá,,,
meu exemplo é bem simples,,, mostra os waits que estão acontecendo no SQL…
|
select |
Ele vai tentar associar a requisição ao wait.
Estava em um cliente montando uma estratégia para migração de 2 instâncias de SQL 2000 para uma única instância de SQL 2005… até aí tranquilo,,, certo?
Listamos os linked servers, jobs, usuários e senhas, bases, collation,,, etc,,, tudo quase pronto pra migração….
Ai, lembrei de um detalhe… algumas bases estavam em uma instância default do SQL,,, e vamos migrar todas para um SQL em uma instância,,, ai vem o problema:
Legal,,, iai? Só criar o SQL Aliases (Iniciar>Executar>Cliconfg)? boa,,, pena que tem que criar em maquina a maquina,,, Redirecionar DNS? até funcionaria se o outro SQL não tivesse instância. Poderíamos alterar o DNS e “adicionar o servidor” com o sp_addserver (sp_addserver ‘nome_do_host’, local, duplicate_ok) o problema é que a instância tem que escutar a 1433, até ai nenhum grande problema, adiciona como porta secundária.
como fazer o deploy de aliases rápido? Policy… cria uma chave de registro e adiciona o aliases…
Outra forma, utilizar um “proxy” de SQL,,, tipo F5, Green SQL,,,
Imagine a situação do post Corrompendo um Banco SQLmas na vida real,,,
Você chega um belo dia na empresa e, lê nos seus emails que, o SQL apresentou falha na estrutura de dados e algumas páginas de dados podem ter sido corrompidas,,,
Como um bom DBA, você corre para ver se o backup da noite foi feito, se os backups de transaction log também estão sendo feitos e descobre que sim,,,, todos os arquivos necessários para restaurar o banco estão lá,,,
Legal,,, mas,,, e agora? dependendo da utilização do banco você pode restaurar o backup da madrugada, os de log até o horário do problema e dali pra frente o que der pra fazer…
Em outros casos,,, você não pode se dar ao luxo de perder informação,,,,
Uma das formas seria executar o restore do banco em outro lugar, ou na mesma instância mas com outro nome, executar o checkdb e remover a página com problema e trazer a diferença dos dados,,, até aqui nada tão complicado,,, tirando o fato de se a tabela for muito grande, ou muito complexa e a query para mostrar essa diferença for muito complicado…
Para ajudar a resolver esse problema, o SQL possui uma ferramenta bem interessante chamada TableDiff.
O conceito dela é bem simples: Instância de origem, base de origem, tabela de origem, Instância de destino, base de destino, tabela de destino e o que você quer fazer…
Ex:
"C:\Program Files\Microsoft SQL Server\90\COM\tablediff.exe" -sourceserver MyServer1
-sourcedatabase MyDatabase1
-sourcetable MyTable1
-destinationserver MyServer1
-destinationdatabase MyDatabase1
-destinationtable MyTable2
-et DiffsTable
Nesse outro exemplo ele gera um arquivo com INSER/UPDATE/DELETE
"C:\Program Files\Microsoft SQL Server\90\COM\tablediff.exe" -sourceserver MyServer1
-sourcedatabase MyDatabase1
-sourcetable MyTable1
-destinationserver MyServer1
-destinationdatabase MyDatabase1
-destinationtable MyTable2
-et DiffsTable
-f d:\MyTable1_MyTable2_diff.sql
Simples certo? em teoria não é muito complicado…
Da pra deixar mais fácil? sim,,, com certeza…
O Sr. Mladen Prajdic (Blog | Twitter) desenvolveu uma interface bem interessante para ajudar na utilização do executável…
O link para download pode ser encontrado no post aqui, ou diretamente aqui.
O aplicativo é bem simples de usar, o ponto de atenção é que você precisa indicar onde está o executável do TableDiff.exe.
Ele é bem auto-explicativo, pequeno e o principal,,, é de graça !!!
Vale gastar uns minutos para aprender a usar ele, vai que em um dia de emergência você precisa de uma ajuda rápida para solucionar um problema, ou ver a diferenças nas tabelas do seu logshipping….
Esse código faz parte daquele tipo de código para gerar documentação.
Não faz nada muito complexo, apenas mostra o objeto, quem é dono, que tipo e quando foi criado.
SELECT [NAME] AS OBJECT_NAME, USER_NAME(UID) AS OWNER, TYPE = CASE WHEN XTYPE = 'u' THEN 'table' WHEN XTYPE = 'c' THEN 'check constraint' WHEN XTYPE = 'd' THEN 'default constraint' WHEN XTYPE = 'f' THEN 'foreign key constraint' WHEN XTYPE = 'fn' THEN 'scalar function' WHEN XTYPE = 'if' THEN 'inline table function' WHEN XTYPE = 'p' THEN 'stored procedure' WHEN XTYPE = 'pk' THEN 'primary key' WHEN XTYPE = 'tf' THEN 'table function' WHEN XTYPE = 'tr' THEN 'trigger' WHEN XTYPE = 'uq' THEN 'unique constraint' WHEN XTYPE = 'v' THEN 'view' END, CRDATE AS CREATION_DATE FROM SYSOBJECTS WHERE XTYPE IN ('u','c','d','f', 'fn','if','p','pk', 'tf','tr','u','uq', 'v') ORDER BY XTYPE
Complementando o Post Procurando por conversão implícita sobre a apresentação do Marcos Freccia (Blog | Twitter) “10 coisas que todo desenvolvedor deveria saber sobre SQL Server”
Um dos grandes problemas dessa conversão é o SQL utilizar index scan ao invés de index seek.
Esse código mostra consultas que estão executado Index Scan por motivos de Conversões Implícitas.
with XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/showplan' as sql) select total_worker_time/execution_count AS AvgCPU , total_elapsed_time/execution_count AS AvgDuration , (total_logical_reads+total_physical_reads)/execution_count AS AvgReads , execution_count , SUBSTRING(st.TEXT, (qs.statement_start_offset/2)+1 , ((CASE qs.statement_end_offset WHEN -1 THEN datalength(st.TEXT) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS txt , qs.max_elapsed_time , db_name(qp.dbid) as database_name , quotename(object_schema_name(qp.objectid, qp.dbid)) + N'.' + quotename(object_name(qp.objectid, qp.dbid)) as obj_name , qp.query_plan.value( N'(/sql:ShowPlanXML/sql:BatchSequence/sql:Batch/sql:Statements/sql:StmtSimple[@StatementType = "SELECT"]/sql:QueryPlan/sql:RelOp/descendant::*/sql:ScalarOperator[contains(@ScalarString, "CONVERT_IMPLICIT")])[1]/@ScalarString', 'nvarchar(4000)' ) as scalar_string , qp.query_plan from sys.dm_exec_query_stats as qs cross apply sys.dm_exec_query_plan(qs.plan_handle) as qp cross apply sys.dm_exec_sql_text(qs.sql_handle) st where qp.query_plan.exist( N'/sql:ShowPlanXML/sql:BatchSequence/sql:Batch/sql:Statements/sql:StmtSimple[@StatementType = "SELECT"]/sql:QueryPlan/sql:RelOp/sql:IndexScan/descendant::*/sql:ScalarOperator[contains(@ScalarString, "CONVERT_IMPLICIT")]' ) = 1;