quarta-feira, 6 de janeiro de 2016

Planejamento de capacidade para tempdb

Planejamento de capacidade para tempdb

SQL Server 2008 R2
Este tópico fornece diretrizes para determinar o espaço adequado em disco necessário para tempdb. Este tópico também inclui recomendações sobre como configurar tempdb para obter o desempenho ideal em um ambiente de produção e informações sobre como monitorar a utilização de espaço de tempdb.

O banco de dados do sistema tempdb é um recurso global disponível a todos os usuários conectados a uma instância do SQL Server. O banco de dados tempdb é utilizado para armazenar os seguintes objetos: objetos do usuário, objetos internos e repositórios de versão.

Objetos do usuário

Os objetos do usuário são criados explicitamente pelo usuário. Esses objetos podem estar no escopo de uma sessão de usuário ou no escopo da rotina na qual o objeto é criado. Uma rotina é um procedimento armazenado, gatilho ou função definida pelo usuário. Os objetos do usuário podem ser um dos seguintes:
  • Tabelas e índices definidos pelo usuário
  • Índices e tabelas do sistema
  • Tabelas e índices temporários globais
  • Tabelas e índices temporários locais
  • Variáveis de tabela
  • Tabelas retornadas em funções com valor de tabela

Objetos internos

Os objetos internos são criados quando necessário pelo Mecanismo de banco de dados do SQL Server para processar instruções SQL Server. Os objetos internos são criados e posicionados dentro do escopo de uma instrução. Os objetos internos podem ser um dos seguintes:
  • Tabelas de trabalho para operações de cursor ou spool e armazenamento temporário de LOB (Objeto Grande).
  • Arquivos de trabalho para operações de junção de hash ou de agregado de hash.
  • Resultados intermediários de classificação para operações como criar ou recriar índices (se SORT_IN_TEMPDB for especificado) ou determinadas consultas GROUP BY, ORDER BY ou UNION.
Cada objeto interno usa um mínimo de nove páginas; uma página IAM e uma extensão de oito páginas. Para obter mais informações sobre essas páginas e extensões, consulte Compreendendo páginas e extensões.

Armazenamento de versão

Um repositório de versão é uma coleção de páginas de dados que contém linhas de dados necessárias para oferecer suporte aos recursos que utilizam controle de versão de linha. Existem dois armazenamentos de versão: um repositório de versão comum e um armazenamento de versão de criação de índice online. Os armazenamentos de versão contêm o seguinte:
  • Versões de linhas geradas através de transações de modificação de dados em um banco de dados que usa instantâneo ou leitura confirmada utilizando níveis de isolamento de controle de versão de linha.
  • Versões de linhas geradas por meio de transações de modificação de dados para recursos como: operações de índice online, vários conjuntos de resultados ativos (MARS) e gatilhos AFTER.
A tabela a seguir lista os recursos do SQL Server que criam objetos de usuário, objetos internos ou versões de linha em tempdb. Sempre que possível, são fornecidos os métodos para calcular a utilização do espaço em disco.
RecursoUtilização de tempdbInformações adicionais
Operações de carregamento em massa com gatilhos habilitadosAs otimizações de importação em massa ficam disponíveis quando os gatilhos são habilitados. O SQL Server usa o controle de versão de linha para gatilhos que atualizam ou excluem transações. Uma cópia de cada linha excluída ou atualizada é adicionada ao armazenamento de versão. Consulte “Gatilhos” posteriormente nesta tabela. Otimizando o desempenho de importação em massa
Consultas de expressões comuns da tabelaPodemos pensar em uma expressão comum da tabela como sendo um conjunto de resultados temporário definido no escopo de execução de uma única instrução SELECT, INSERT, UPDATE, DELETE ou CREATE VIEW.
Quando o plano de consulta para uma consulta de expressão comum da tabela usa um operador de spool para salvar os resultados intermediários de consulta , o Mecanismo de Banco de Dados cria uma tabela de trabalho em tempdb para oferecer suporte a essa operação.
Usando expressões de tabela comuns
WITH common_table_expression (Transact-SQL)
CursoresOs cursores controlados por conjuntos de chaves e os cursores estáticos usam tabelas de trabalho internas do tempdb. Os cursores controlados por conjuntos de chaves usam as tabelas de trabalho para armazenar o conjunto de chaves que identifica as linhas no cursor. Os cursores estáticos usam uma tabela de trabalho para armazenar todo o conjunto de resultados do cursor.
A utilização do espaço em disco para cursores pode variar, dependendo do plano de consulta selecionado. Se o plano de consulta for o mesmo que as versões anteriores do SQL Server, a utilização do espaço em disco será aproximadamente a mesma.
Sobre como escolher um tipo de cursor
Database MailConsulte “Service Broker” posteriormente nesta tabela. Database Mail
DBCC CHECKDBDBCC CHECKDB utiliza as tabelas de trabalho do tempdb para manter os resultados intermediários e para operações de classificação.
Para determinar a necessidade de espaço em disco do tempdb para a operação, execute DBCC CHECKDB WITH ESTIMATEONLY.
DBCC CHECKDB (Transact-SQL)
Otimizando o desempenho de DBCC CHECKDB
Notificações de eventosConsulte “Service Broker” posteriormente nesta tabela. Compreendendo notificações de eventos
ÍndicesQuando você cria ou recria um índice (offline ou online) e define a opção SORT_IN_TEMPDB para ON, o Mecanismo de Banco de Dados utiliza o tempdb para armazenar os resultados intermediários de classificação utilizados para criar o índice. Quando for especificado SORT_IN_TEMPDB e for necessária uma classificação, o tempdb deverá ter espaço em disco suficiente para manter o maior índice somado ao espaço em disco que será igual ao valor da opção index create memory. Para obter mais informações, consulte Exemplo de espaço em disco de índice.
As tabelas e os índices podem ser particionados. Para índices particionados, se for especificada a opção de índice SORT_IN_TEMPDB e o índice estiver alinhado com a tabela base, deverá haver espaço suficiente em tempdb para manter as execuções intermediárias de classificação da partição maior. Se o índice não estiver alinhado, deverá haver espaço suficiente em tempdb para manter as execuções intermediárias de classificação de todas as partições. Para obter mais informações, consulte Diretrizes especiais para índices particionados.
As operações de índice online utilizam o controle de versão de linha para isolar a operação de índice dos efeitos de modificações feitas por outras transações. O controle de versão de linha remove a necessidade de solicitar bloqueios de compartilhamento de linhas que já foram lidas. Operações simultâneas de atualização e exclusão de usuários durante operações de índice online precisam de espaço para o registro de versão em tempdb. Quando as operações de índice online utilizam SORT_IN_TEMPDB e é necessária uma classificação, o tempdb também deverá ter espaço em disco adicional descrito anteriormente para resultados intermediários de classificação. As operações de índice online que criam, cancelam ou recriam um índice clusterizado também precisam de espaço adicional em disco para criar e manter um índice de mapeamento temporário. As operações CREATE e UPDATE STATISTICS podem usar tempdb para classificar o exemplo de linhas para compilação de estatísticas. Para obter mais informações, consulte Requisitos de espaço em disco para operações de índice DDL.
tempdb e criação de índice
Diretrizes especiais para índices particionados
Requisitos de espaço em disco para operações de índice DDL
Exemplo de espaço em disco de índice
Como funcionam as operações de índice online
Variáveis e parâmetros do tipo de dados LOB (Objeto Grande)Os tipos de dados de objetos grandes são varchar(max), nvarchar(max), varbinary(max)text, ntext, image e xml. Esses tipos podem ter até 2 GB e podem ser utilizados como variáveis ou parâmetros em procedimentos armazenados, funções definidas pelo usuário, lotes ou consultas. Os parâmetros e as variáveis definidos como tipo de dados de LOB utilizam a memória principal como armazenamento se os valores forem pequenos. Entretanto, os valores grandes são armazenados no tempdb. Quando são armazenados variáveis e parâmetros LOB no tempdb, eles são tratados como objetos internos. Você pode consultar a exibição dinâmica de gerenciamento sys.dm_db_session_space_usage para informar as páginas alocadas a objetos internos para uma determinada sessão.
Algumas funções intrínsecas de cadeia de caracteres, como SUBSTRING ou REPLICATE, podem exigir armazenamento intermediário temporário em tempdb quando estiverem funcionando em valores LOB. Da mesma forma, quando um nível de isolamento da transação baseada em controle da versão de linha é habilitado no banco de dados e são feitas modificações de objetos grandes, o fragmento alterado do LOB é copiado no repositório de versão em tempdb.
Usando tipos de dados de valor grande
MARS (Vários Conjuntos de Resultados Ativos)Vários conjuntos de resultados ativos podem acontecer em uma única conexão; isso geralmente é chamado de MARS. Se uma sessão de MARS emite uma instrução de modificação de dados (como INSERT, UPDATE ou DELETE) quando há um conjunto de resultados ativo, as linhas afetadas pela instrução de modificação são armazenadas no repositório de versão em tempdb. Consulte “Controle de versão de linha” posteriormente nesta tabela. Usando MARS (vários conjuntos de resultados ativos)
Notificações de consultasConsulte “Service Broker” posteriormente nesta tabela. Usando notificações de consulta
ConsultasAs consultas que contêm instruções SELECT, INSERT, UPDATE e DELETE podem utilizar objetos internos para armazenar resultados intermediários para junções de hash, agregados de hash ou classificação.
Quando um plano de execução de consulta é armazenado em cache, as tabelas de trabalho exigidas pelo plano são armazenadas em cache. Quando uma tabela de trabalho é armazenada em cache, a tabela é truncada e nove páginas permanecem no cache para reutilização. Isso melhora o desempenho da próxima execução da consulta. Se o sistema estiver com pouca memória, o Mecanismo de Banco de Dados poderá remover o plano de execução e cancelar as tabelas de trabalho associadas.
Reutilização e armazenamento em cache do plano de execução
Controle de versão de linhaO controle de versão de linha é uma estrutura geral utilizada para oferecer suporte aos seguintes recursos:
  • Gatilhos
  • MARS (Vários Conjuntos de Resultados Ativos)
  • Operações de índice que especificam a opção ONLINE
  • Níveis de isolamento de transação baseada em controle de versão de linha:
    • Uma implementação nova de nível de isolamento de confirmação de leitura que utiliza o controle de versão de linha para fornecer a consistência de leitura de nível de instrução.
    • Um nível de isolamento do instantâneo para fornecer a consistência de leitura de nível de transação.
As versões de linhas são mantidas no repositório de versão tempdb durante o tempo em que uma transação ativa deva acessá-las. O conteúdo do repositório de versão atual é retornado em sys.dm_tran_version_store. As páginas de armazenamento de versão são controladas no nível de arquivo porque são recursos globais. Você pode utilizar a coluna version_store_reserved_page_count em sys.dm_db_file_space_usage para exibir o tamanho atual do armazenamento de versão. A limpeza total do armazenamento de versão deve considerar a transação mais longa em execução que requer acesso à versão particular. A transação mais longa em execução relacionada com a limpeza do repositório de versão pode ser descoberta exibindo a coluna elapsed_time_seconds em sys.dm_tran_active_snapshot_database_transactions. Os contadores Espaço Livre em tempdb (KB) e Tamanho do Repositório de Versão (KB) no objeto Transações podem ser utilizados para monitorar o tamanho e a taxa de crescimento do armazenamento de controle de versão de linha em tempdb. Para obter mais informações, consulte SQL Server, objeto de transações.
Para calcular o espaço necessário em tempdb para o controle de versão de linha, primeiramente você precisa levar em consideração que uma transação ativa deve manter todas as suas alterações no armazenamento de versão. Isso significa que uma transação de instantâneo iniciada posteriormente pode acessar as versões antigas. Da mesma forma, se houver uma transação de instantâneo ativa, todos os dados de repositório de versão gerados por transações que estiverem ativas quando o instantâneo for iniciado também deverão ser mantidos.
Esta é uma fórmula básica:
[Size of Version Store] = 2 *
[Version store data generated per minute] *
[Longest running time (minutes) of your transaction]
Compreendendo níveis de isolamento com base em controle de versão de linha
Uso do recurso de controle de versão de linha
Service Broker O Service Broker ajuda os desenvolvedores a criarem aplicativos assíncronos, livremente acoplados, nos quais os componentes independentes trabalham em conjunto para realizar uma tarefa. Esses componentes de aplicativo trocam mensagens que contêm as informações necessárias para conclusão da tarefa. O Service Broker utiliza explicitamente o tempdb para preservar caixas de diálogo de contexto existentes que não podem ficar na memória. O tamanho é de aproximadamente 1 KB por caixa de diálogo.
Além disso, o Service Broker utiliza implicitamente tempdb pelo cache de objetos no contexto de execução de consulta, como tabelas de trabalho utilizadas para eventos de timer e plano de fundo de conversações entregues.
Database Mail, Notificações de eventos e Notificações de consulta utilizam Service Brokerimplicitamente.
Visão geral (Service Broker)
Procedimentos armazenadosO procedimentos armazenados podem criar objetos de usuário como tabelas temporárias globais ou locais e seus índices, variáveis ou parâmetros. Os objetos temporários nos procedimentos armazenados podem ser armazenados em cache para aperfeiçoar as operações que cancelam e criam tais objetos. Esse comportamento pode aumentar as exigências de espaço em disco de tempdb. São armazenadas até nove páginas por objeto temporário para reutilização. Consulte “Tabelas temporárias e variáveis de table” posteriormente nesta tabela. Criando procedimentos armazenados (Mecanismos de Banco de Dados)
Tabelas temporárias e variáveis de table
  • Tabelas e índices definidos pelo usuário
  • Índices e tabelas do sistema
  • Tabelas e índices temporários globais
  • Tabelas e índices temporários locais
  • Variáveis de table
  • Tabelas retornadas em funções com valor de tabela
São armazenadas tabelas temporárias e variáveis de table em tempdb. As exigências de espaço em disco para objetos de tabela temporária são iguais às versões anteriores do SQL Server. O método para calcular o tamanho de uma tabela temporária é o mesmo utilizado para calcular o tamanho de uma tabela padrão. Para obter mais informações, consulte Estimando o tamanho de uma tabela.
Uma variável table se comporta como uma variável local. Uma variável de table é do tipo table e é utilizada principalmente para o armazenamento temporário de um conjunto de linhas retornadas como o conjunto de resultados de uma função com valor de tabela. O espaço em disco exigido para manter uma variável de table depende do tamanho da variável declarada e do valor armazenado na variável.
As tabelas temporárias locais e as variáveis são armazenadas em cache quando as seguintes condições são satisfeitas:
  • Não são criadas restrições nomeadas.
  • Não são executadas instruções DDL (linguagem de definição de dados) que afetam a tabela depois da criação da tabela temporária, como instruções CREATE INDEX ou CREATE STATISTICS.
  • O objeto temporário não é criado utilizando o SQL dinâmico, como: sp_executesql N'create table #t(a int)'.
  • O objeto temporário é criado dentro de outro objeto, como um procedimento de armazenamento, gatilho, função definida pelo usuário; ou é a tabela de retorno de uma função definida pelo usuário, com valor de tabela.
Quando uma tabela temporária ou uma variável de table é armazenada em cache, o objeto temporário não é excluído quando seu objetivo é alcançado. Ao invés disso, o objeto temporário é truncado. Na próxima vez que o objeto de chamada é executado são armazenadas e reutilizadas até nove páginas. O armazenamento em cache permite que as operações de cancelamento e criação de objetos sejam executadas rapidamente e reduz a contenção de alocação de página.
Para otimizar o desempenho, você deve calcular o espaço em disco necessário para armazenar em cache tabelas temporárias locais ou variáveis de table no tempdb utilizando a seguinte fórmula:
9 page per temp table
* number of average temp tables per procedure
* number of maximum simultaneous executions of the procedure
CREATE TABLE (Transact-SQL)
Usando variáveis e parâmetros (Mecanismo de Banco de Dados)
DECLARE @local_variable (Transact-SQL)
GatilhosAs tabelas inseridas e excluídas utilizadas em gatilhos AFTER são criadas no tempdb. Ou seja, as linhas que são atualizadas ou excluídas pelo gatilho são controladas por versão. Isso inclui todas as linhas modificadas pela instrução que acionou o gatilho. Ou seja, as linhas inseridas pelo gatilho não são controladas por versão.
Os gatilhos INSTEAD OF utilizam tempdb de modo semelhante para consultas. A utilização do espaço em disco para gatilhos INSTEAD OF é a mesma das versões anteriores do SQL Server. Consulte “Consultas” previamente nesta tabela.
Quando você carrega dados em massa com gatilhos habilitados, uma cópia de cada linha excluída ou atualizada é adicionada ao armazenamento de versão.
CREATE TRIGGER (Transact-SQL)
Otimizando o desempenho de importação em massa
Uso do recurso de controle de versão de linha
Funções definidas pelo usuárioAs funções definidas pelo usuário podem criar objetos de usuário temporários, como tabelas globais ou locais e seus índices, variáveis ou parâmetros. Por exemplo, a tabela de retorno de uma função com valor de tabela é armazenada em tempdb.
Os tipos de dados permitidos para obter parâmetros e valores de retorno em funções escalares e funções com valor de tabela incluem a maioria dos tipos de dados de LOB. Por exemplo, um valor de retorno pode ser do tipo xml ou varchar(max). Consulte “Variáveis e parâmetros do tipo dados de LOB (Objeto Grande)” previamente nesta tabela.
Os objetos temporários nas funções definidas pelo usuário com valor de tabela podem ser armazenados em cache para aperfeiçoar as operações que cancelam e criam tais objetos. Consulte “Tabelas temporárias e variáveis de table” previamente nesta tabela.
CREATE FUNCTION (Transact-SQL)
XMLVariáveis e parâmetros do tipo xml podem ter até 2 GB. Eles utilizam a memória principal como armazenamento contanto que os valores sejam pequenos. Entretanto, os valores grandes são armazenados no tempdb. Consulte “Variáveis e parâmetros do tipo dados de LOB (Objeto Grande)” previamente nesta tabela.
O procedimento armazenado do sistema sp_xml_preparedocument cria uma tabela de trabalho em tempdb. O analisador MSXML utiliza a tabela de trabalho para armazenar o documento XML analisado. As exigências de espaço em disco para tempdb são praticamente proporcionais ao tamanho do documento XML especificado quando é executado o procedimento armazenado.
Implementando XML no SQL Server
sp_xml_preparedocument (Transact-SQL)
Consultando XML usando OPENXML

A determinação do tamanho apropriado para tempdb em um ambiente de produção depende de muitos fatores. Como previamente descrito neste tópico, esses fatores incluem a carga de trabalho existente e os recursos SQL Server utilizados. Nós recomendamos que você analise a carga de trabalho existente executando as seguintes tarefas em um ambiente de teste do SQL Server:
  1. Defina crescimento automático para tempdb.
  2. Execute consultas individuais ou arquivos de rastro de carga de trabalho e monitore a utilização de espaço de tempdb.
  3. Execute operações de manutenção de índice, como recriar índices e monitore o espaço de tempdb.
  4. Utilize os valores de utilização de espaço das etapas anteriores para prever sua utilização total de carga de trabalho; ajuste esse valor para atividades simultâneas projetadas e defina adequadamente o tamanho de tempdb.
Para obter mais informações sobre como monitorar o espaço de tempdb, consulte Solucionando problemas de espaço insuficiente em disco em tempdb. Para obter mais informações sobre como calcular a utilização de tempdb durante operações de índice, consulte Exemplo de espaço em disco de índice.

Configurando tempdb para ambientes de produção

Para obter o melhor desempenho de tempdb, siga as diretrizes e as recomendações fornecidas em Aperfeiçoando o desempenho de tempdb.

A execução fora do espaço em disco em tempdb pode causar interrupções significativas no ambiente de produção do SQL Server e pode impedir que aplicativos que estão em execução concluam as operações. Você pode utilizar a exibição dinâmica de gerenciamento sys.dm_db_file_space_usage para monitorar o espaço em disco utilizado por esses recursos nos arquivos tempdb. Além disso, para monitorar a alocação de página ou a atividade de desalocação em tempdb em nível de sessão ou tarefa, você pode utilizar as exibições dinâmicas de gerenciamento sys.dm_db_session_space_usage e sys.dm_db_task_space_usage. Essas exibições podem ser utilizadas para identificar consultas grandes, tabelas temporárias ou variáveis de tabela que estão utilizando muito espaço em disco de tempdb. Existem vários contadores que podem ser utilizados para monitorar o espaço livre disponível em tempdb e também os recursos que estão utilizando tempdb. Para obter mais informações, consulte Solucionando problemas de espaço insuficiente em disco em tempdb.

Configuration Best Practices for SQL Server Tempdb–Placement

Configuration Best Practices for SQL Server Tempdb–Placement

This part of a three-part article consolidating a number of best practices for configuring SQL Server tempdb focuses on tempdb placement. You won’t just find prescriptive rules here, but also the background to the recommendations and guidance on how to choose the best configuration for any particular environment. In particular this section covers the following:
Tempdb file placement
It’s quite a well-known best practice to separate data, transaction logs, and tempdb, and if you knew that already, are you sure you know why? The origin of this recommendation lies with the separation of types of workload between different physical storage, i.e. separate physical disks.
This is still a valid recommendation for environments where you can guarantee that separation, but more commonly we see customers deploying SQL Server in a shared storage environment, where physical separation is much harder to achieve and usually isn’t even necessary for performance reasons.
It is still a good idea however to maintain separation to help with manageability so that potential problems are easier to isolate. For example, separating tempdb onto its own logical disk means that you can pre-size it to fill the disk without worrying about space requirements for other files, and the more separation you implement the easier it is to correlate logical disk performance to specific database files.
At the very minimum you should aim to have one logical disk for data files, one for transaction log files, and one for tempdb data files. I prefer to keep the tempdb data files on their own drive so they can be sized to fill the drive and place the tempdb log files with the user database log files where there should be enough free disk space for unexpected autogrow events for any log file.
Local tempdb for failover cluster instances
Until SQL Server 2012, a failover cluster instance of SQL Server required all its database files to be on shared disk resources within the cluster. This was to ensure that when the instance failed over to another node in the cluster, all its dependent disks could be moved with it.
Nothing in tempdb persists after a restart and it’s effectively recreated every time. The failover process for a clustered instance involves a restart of SQL Server so nothing in tempdb needs to be moved across to the other node and there’s no technical reason why tempdb should be on a shared disk.
In SQL Server 2008 R2 you could force tempdb onto a local disk but it wasn’t supported; in SQL Server 2012 it’s fully supported and very straightforward to implement. All you need to do is use ALTER DATABASElike this:
You will see messages after execution that look like this:
That’s all there is to it. All you need to remember is that you need to have the same path available on all cluster nodes, and the service account needs to have read/write permission so that tempdb can start after failover.
Why might a local tempdb be useful?
There are two reasons why you might want to move tempdb from a shared disk to a local disk, and both are related to performance.
The first reason is that the relatively recent increase in cost effective, ultra-fast solid-state storage presents an opportunity to achieve significant performance gains on servers experiencing heavy tempdb usage. The challenge prior to SQL Server 2012 was that solid-state storage cards, like those provided by FusionIO and Texas Instruments, plug straight into a server’s motherboard to avoid all the overhead of traditional storage buses. This made it very difficult to use them at all in failover cluster instances and now they can be used for the discrete task of running tempdb.
The second reason you might want to use a local tempdb is to take I/O requests off your shared storage to improve the performance of the shared storage. We used this to great effect for one customer who was really at the peak of their SANs performance capacity; a FusionIO card was placed in each node of several failover clusters and all tempdb activity was re-directed locally. Even though tempdb performance was never bad before, the result was a significant reduction in load against the SAN which extended its life by an additional six months.

quarta-feira, 2 de dezembro de 2015

custom validation in codeigniter for username using callback function

custom validation in codeigniter for username using callback function

custom validation in codeigniter using callback function is easy way to validate input field on form dynamically. We can add custom validation to any input field before insertion in DB. CodeIgniter provide all basic validation with its form_validation class like required, numeric, min_length, max_length, alpha, alpha_numeric etc.
But If we want to add our custom validation for any particular field (mainly for the checking username availability). we can use its callback technique.
Example :
Here $username is passed automatically to check_username function, we can use our custom rules over here to validate it.
Along with CodeIgniters basic validations you can use your custom conditions (like regular expressions) for a validation on any input field. you can also use regular expression to validate it in your way

segunda-feira, 23 de novembro de 2015

How to: Grant User Access to a Report Server (Report Manager)

How to: Grant User Access to a Report Server (Report Manager)

SQL Server 2008 R2
13 out of 19 rated this helpful - Rate this topic
Reporting Services uses role-based security to grant user access to a report server. On a new report server installation, only users who are members of the local Administrators group have permissions to report server content and operations. To make the report server available to other users, you must create role assignments that map  user or group accounts to a predefined role that specifies a collection of tasks.
For a report server that is configured for native mode, use Report Manager to assign users to a role. There are two types of roles:
  • Item-level roles are used to view, add, and manage report server content, subscriptions, report processing, and report history. Item-level role assignments are defined on the root node (the Home folder) or on specific folders or items farther down the hierarchy.
  • System-level roles grant access to site-wide operations that are not bound to any specific item. Examples include using Report Builder and using shared schedules.
    The two types of roles complement each other and should be used together. For this reason, adding a user to a report server is a two-part operation. If you assign a user to an item-level role, you should also assign them to a system-level role. When assigning a user to a role, you must select a role that is already defined. To create, modify, or delete roles, use SQL Server Management Studio. For more information, see How to: Create, Delete, or Modify a Role (Management Studio).
For a report server that is configured for SharePoint integrated mode, you configure access from a SharePoint site using SharePoint permissions. Permission levels on the SharePoint site determine access to report server content and operations. You must be a site administrator to grant permissions on a SharePoint site. For more information, see Granting Permissions on Report Server Items on a SharePoint Site.

Review the following list before adding users to a native mode report server.
  • You must be a member of the local Administrators group on the report server computer. If you are deploying Reporting Services on Windows Vista or Windows Server 2008, additional configuration is required before you can administer a report server locally. For more information, see How to: Configure a Report Server for Local Administration on Windows Vista and Windows Server 2008 (UAC).
  • To delegate this task to other users, create role assignments that map user accounts to Content Manager and System Administrator roles. Users who have Content Manager and System Administrator permissions can add users to a report server.
  • In SQL Server Management Studio, view the predefined roles for System Roles and User Roles so that you are familiar with the kinds of tasks in each role. Task descriptions are not visible in Report Manager, so you will want to be familiar with the roles before you begin adding users.
  • Optionally, customize the roles or define additional roles to include the collection of tasks that you require. For example, if you plan to use custom security settings for individual items, you might want to create a new role definition that grants view-access to folders. For more information, see Tutorial: Setting Permissions in Reporting Services.

To add a user or group to a system role

  1. Start Report Manager.
  2. Click Site Settings.
  3. Click Security.
  4. Click New Role Assignment.
  5. In Group or user name, enter a Windows domain user or group account in this format: <domain>\<account>. If you are using forms authentication or custom security, specify the user or group account in the format that is correct for your deployment.
  6. Select a system role, and then click OK.
    Roles are cumulative, so if you select both System Administrator and System User, a user or group will be able to perform the tasks in both roles.
  7. Repeat to create assignments for additional users or groups.

To add a user or group to an item role

  1. Start Report Manager and locate the report item for which you want to add a user or group.
  2. Hover over the item, and click the drop-down arrow.
  3. In the drop-down menu, click Security.
  4. Click New Role Assignment.
    NoteNote
    If an item currently inherits security from a parent item, click Edit Item Security in the toolbar to change the security settings. Then click New Role Assignment.
  5. In Group or user name, enter a Windows domain user or group account in this format: <domain>\<account>. If you are using forms authentication or custom security, specify the user or group account in the format that is correct for your deployment.
  6. Select one or more role definitions that describe how the user or group should access the item, and then click OK.
  7. Repeat to create assignments for additional users or groups.

sexta-feira, 13 de novembro de 2015

JavaScript - Como validar CPF

<script>
function TestaCPF(strCPF) {
    var Soma;
    var Resto;
    Soma = 0;
 if (strCPF == "00000000000") return false;
    
 for (i=1; i<=9; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i);
 Resto = (Soma * 10) % 11;
 
    if ((Resto == 10) || (Resto == 11))  Resto = 0;
    if (Resto != parseInt(strCPF.substring(9, 10)) ) return false;
 
 Soma = 0;
    for (i = 1; i <= 10; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i);
    Resto = (Soma * 10) % 11;
 
    if ((Resto == 10) || (Resto == 11))  Resto = 0;
    if (Resto != parseInt(strCPF.substring(10, 11) ) ) return false;
    return true;
}
var strCPF = "12345678909";
alert(TestaCPF(strCPF));
</script>

quarta-feira, 11 de novembro de 2015

BootStrap - How change Navbar colour

Available navbars

You've got two basic navbars :
<!-- A light one -->
<nav class="navbar navbar-default" role="navigation"></nav>
<!-- A dark one -->
<nav class="navbar navbar-inverse" role="navigation"></nav>

Default color usage

Here are the main colors and their usage :
  • #F8F8F8 : navbar background
  • #E7E7E7 : navbar border
  • #777 : default color
  • #333 : hover color (#5E5E5E for .nav-brand)
  • #555 : active color
  • #D5D5D5 : active background

Default style

If you want to put some custom style, here's the CSS you need to change :
/* navbar */
.navbar-default {
    background-color: #F8F8F8;
    border-color: #E7E7E7;
}
/* title */
.navbar-default .navbar-brand {
    color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
    color: #5E5E5E;
}
/* link */
.navbar-default .navbar-nav > li > a {
    color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
    color: #333;
}
.navbar-default .navbar-nav > .active > a, 
.navbar-default .navbar-nav > .active > a:hover, 
.navbar-default .navbar-nav > .active > a:focus {
    color: #555;
    background-color: #E7E7E7;
}
.navbar-default .navbar-nav > .open > a, 
.navbar-default .navbar-nav > .open > a:hover, 
.navbar-default .navbar-nav > .open > a:focus {
    color: #555;
    background-color: #D5D5D5;
}
/* caret */
.navbar-default .navbar-nav > .dropdown > a .caret {
    border-top-color: #777;
    border-bottom-color: #777;
}
.navbar-default .navbar-nav > .dropdown > a:hover .caret,
.navbar-default .navbar-nav > .dropdown > a:focus .caret {
    border-top-color: #333;
    border-bottom-color: #333;
}
.navbar-default .navbar-nav > .open > a .caret, 
.navbar-default .navbar-nav > .open > a:hover .caret, 
.navbar-default .navbar-nav > .open > a:focus .caret {
    border-top-color: #555;
    border-bottom-color: #555;
}
/* mobile version */
.navbar-default .navbar-toggle {
    border-color: #DDD;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
    background-color: #DDD;
}
.navbar-default .navbar-toggle .icon-bar {
    background-color: #CCC;
}
@media (max-width: 767px) {
    .navbar-default .navbar-nav .open .dropdown-menu > li > a {
        color: #777;
    }
    .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
    .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
        color: #333;
    }
}

Custom colored navbar examples

Here are 4 examples of custom colored navbar :
JSFiddle link
enter image description here
And the SCSS code :
$bgDefault      : #e74c3c;
$bgHighlight    : #c0392b;
$colDefault     : #ecf0f1;
$colHighlight       : #ffbbbc;
.navbar-default {
  background-color: $bgDefault;
  border-color: $bgHighlight;
  .navbar-brand {
    color: $colDefault;
    &:hover, &:focus { 
      color: $colHighlight; }}
  .navbar-text {
    color: $colDefault; }
  .navbar-nav {
    > li {
      > a {
        color: $colDefault;
        &:hover,  &:focus {
          color: $colHighlight; }}}
    > .active {
      > a, > a:hover, > a:focus {
        color: $colHighlight;
        background-color: $bgHighlight; }}
    > .open {
      > a, > a:hover, > a:focus {
        color: $colHighlight;
        background-color: $bgHighlight; }}}
  .navbar-toggle {
    border-color: $bgHighlight;
    &:hover, &:focus {
      background-color: $bgHighlight; }
    .icon-bar {
      background-color: $colDefault; }}
  .navbar-collapse,
  .navbar-form {
    border-color: $colDefault; }
  .navbar-link {
    color: $colDefault;
    &:hover {
      color: $colHighlight; }}}
@media (max-width: 767px) {
  .navbar-default .navbar-nav .open .dropdown-menu {
    > li > a {
      color: $colDefault;
      &:hover, &:focus {
        color: $colHighlight; }}
    > .active {
      > a, > a:hover, > a:focus, {
        color: $colHighlight;
        background-color: $bgHighlight; }}}
}

segunda-feira, 9 de novembro de 2015

Anti-Spam by CleanTalk

No CAPTCHA, no questions, no counting animals, no puzzles, no math and no spam bots.

Anti-spam features

  1. Stops spam comments.
  2. Stops spam registrations.
  3. Stops spam contact emails.
  4. Stops spam orders.
  5. Stops spam bookings.
  6. Stops spam subscriptions.
  7. Stops spam in widgets.
  8. Check existing comments for spam.

Public reviews

Using on WPLift was a great test as we receive huge amounts of spam. Oliver Dale. WPLift.com.

Comments spam protection

Supports native WordPress, JetPack comments and any other comments plugins. Plugin moves spam comments to SPAM folder or set option to silent ban spam comments.

Spam bots registrations filter

Filers spam bots on registrations forms WordPress, BuddyPress, bbPress, S2Member, WooCommerce and any other registrations plugins.

Protection against contact forms spam

Plugin is tested and ready to protect against spam emails via Formidable forms, Contact form 7, JetPack Contact form, Fast Secure Contact form, Ninja forms, Landing pages, Gravity forms and any themes/custom contact forms.

WooCommerce spam filter

Anti-spam by CleanTalk filters spam registrations and spam reviews for WooCommerce. Plugin is fully compatible with WooCommerce 2.1 and upper.

Newsletters filter

Anti-spam by CleanTalk filters spam subsciptions for MailPoet and many other newsletters plugins.

Spam filter for themes contact forms

Plugin blocks spam emails via any themes (built-in) contact forms. With AJAX forms plugin silent (without any error notices on WordPress frontend) filters spam emails.

Other spam filters

  • WordPress Landing Pages.
  • WP User Frontend.
  • Any WordPress form (option 'Custom contact forms'). 

Compatible with WordPress cache plugins

  • W3 Total Cache, Quick Cache, WP Fastest Cache, Hyper Cache, WP Super cache and any other cache plugins.

Check existing comments for spam. Bulk comments removal

With the help of anti-spam by CleanTalk you can check existing comments, to find and quickly delete spam comments at once. For use this function, go to WP Console->Comments->Find spam comments.

Check existing users for spam. Bulk accounts removal

With the help of anti-spam by CleanTalk you can check existing comments, to find and quickly delete spam users at once. For use this function, go to WP Console->Users->Check for spam.

Low false/positive rate

This plugin uses multiple anti-spam tests to filter spam bots with lower false/positive rate as possible. Multiple anti-spam tests avoid false/positive blocks for real website visitors even if one of the tests failed.

Spam attacks log

Service CleanTalk (this plugin is a client application for CleanTalk anti-spam service) records all filtered comments, registration and other spam attacks in the "Log of spam attacks" and stores the data in the log up to 45 days. Using the log, you can ensure reliable protection of your website from spam and no false/positive filtering.

Spam FireWall

CleanTalk has got an advanced option "Spam FireWall", this option allows blocking the most active spam bots before they get access to web site. It prevents loading of pages of the web site by spam bots, so your web server doesn't need perform all scripts on these pages. Also it prevents scanning of pages of the web site spam bots. Therefore Spam FireWall significantly can reduce the load on your web server.
Spam FireWall also makes CleanTalk the two-step protection from spam bots. Spam FireWall is the first step and it blocks the most active spam bots, CleanTalk Anti-Spam is the second step and it checks all other requests on the web site in the moment before submit comments/registers and etc.

How Spam FireWall works?

  • The visitor enters to your web site.
  • HTTP request data is checked of the nearly 5,8 million of certain IP spam bots.
  • If it is an active spam bot, it gets a blank page, if it is a visitor then it gets a site page. This is completely transparent to the visitors.
All the CleanTalk Spam FireWall activity is being logged in the process of filtering. The logs will be available for viewing in CleanTalk Dashboard since 10/15/2015.

Spam FireWall DDos Protection (Experimentally option)

Spam FireWall can mitigate HTTP/HTTPS DDoS attacks. When an intruder makes GET requests to attack your website. Spam FireWall blocks all requests from bad IP addresses. Your website givies infringer a special page with description of DDoS rejection instead of the website pages. Therefore Spam FireWall can help to reduce of CPU usage on your server.

XML-RPC brute force protection

Spam FireWall can mitigate XML-RPS brute force attacks. It blocks XML-RPS attacks from bad IP addresses. That helps to prevent bruteforce attacks by a Remote Procedure Call.

No spam comments, no spam registrations, no spam contact emails, no spam trackbacks. CAPTCHA less anti-spam for WordPress

Spam is one of the most irritating factors. Spam become every year more and conventional anti-spam can no longer handle all the spam bots. CleanTalk prevents spam and automatically blocks it. You'll be surprised of effective protection against spam.

Anti-spam plugin info

CleanTalk is an anti-spam solution all in 1 for WordPress that protects login, comments, contact and WooCommerce forms all at once. You don't need to install separate anti-spam plugins for each form. This allows your blog to work faster and save resources. After installation you will forget about spam, CleanTalk plugin will do all the work. You won't have to deal with spam, CleanTalk will do this for you automatically.
CleanTalk is a transparent anti-spam tool, we provide detailed statistics of all entering comments and logins. You can always be sure that there are no errors. We have developed a mobile app for you to see anti-spam statistics wherever.
We have developed antispam for WordPress that would provide maximum protection from spam bots and you can provide for your visitors a simple and convenient form of comments/registrations without annoying CAPTCHAs and puzzles. Used to detect spam multistage test that allows us to block up to 99.998% of spam bots.
The anti-spam method offered by CleanTalk allows to switch from the methods that trouble the communication (CAPTCHA, question-answer etc.) to a more convenient one.
CleanTalk is premium anti-spam service for WordPress, please look at the pricing. The plugin works with cloud anti spam service CleanTalk. We try to provide anti-spam service at the highest level and we can not afford to offer a free version of our service, as this will immediately affect the quality of providing anti-spam protection. Paying for a year of anti-spam service, you save a lot more and get:
  • Up to 99.998% protection against spam bots.
  • Time and resources saving.
  • More registrations/comments/visitors.
  • Protect several websites at once at different CMS.
  • Easy to install and use.
  • Traffic acquisition and user loyalty.
  • 24/7 technical support.
  • Clear statistics.
  • No captcha (reCaptcha), puzzles, etc.
  • Free mobile app to control anti-spam function at your website.

Additional features

  • Online, daily and weekly anti-spam reports traffic VS spam.
  • Apps for iPhone, Android to control anti-spam service, comments, signups, contacts. With traffic and spam statistics for last 7 days.
  • Anti-spam apps for most popular CMS on cleantalk.org.

How to protect sites from spam bots without CAPTCHA?

The most popular method is CAPTCHA - the annoying picture with curved and sloping symbols, which are offered to the visitor to fill in. It is supposed that spam bots won't discern these CAPTCHA, but a visitor will. CAPTCHA provokes great irritation, but if one wants to speak out, he has to fill in these symbols time after time, making mistakes and starting once again. Sometimes CAPTCHA reminds doodle 2x year old child. For users with vision problems captcha is just an insurmountable obstacle. Users hate captcha. Captcha for users means "hate". Unreadable CAPTCHA stops about 80% of site visitors. After 2 failed attempts to bring it up to 95% reject further attempts. At the sight of CAPTCHA and after input errors, many visitors leave the resource. Thus, CAPTCHA helps to protect the resource both from bots and visitors. CAPTCHA is not a panacea from spam. Doubts Concerning the Need for CAPTCHA?