[{"content":"Desvendando as Funções no SQL Server: Poder e Boas Práticas! Olá, pessoal! Hoje vamos mergulhar no mundo das funções no SQL Server. Elas são ferramentas incrivelmente poderosas para encapsular lógica e reutilizar código, mas, como tudo no SQL, exigem atenção para não virarem um gargalo de performance.\nO que são Funções no SQL Server? Uma função no SQL Server é um objeto de banco de dados que aceita parâmetros de entrada, executa um conjunto de ações (como consultas, cálculos, etc.) e retorna um único valor (escalar) ou uma tabela. Elas são similares a procedimentos armazenados, mas com uma diferença crucial: funções podem ser usadas dentro de instruções SELECT, WHERE, HAVING, e até mesmo dentro de outras funções, o que as torna extremamente versáteis.\nExistem dois tipos principais de funções que podemos criar:\nFunções Escalares (Scalar-valued Functions - T-SQL): Retornam um único valor de qualquer tipo de dado. Funções com Valor de Tabela (Table-valued Functions - TVFs): Retornam uma tabela. Podem ser de duas formas: Inline Table-valued Functions (iTVFs): São mais simples e performáticas, pois essencialmente expandem a lógica da função diretamente na consulta chamadora, como uma view parametrizada. Multi-statement Table-valued Functions (mTVFs): Permitem lógica mais complexa, incluindo múltiplos comandos T-SQL, mas podem ter um impacto significativo na performance devido a otimizações menos agressivas e, muitas vezes, a necessidade de materialização de dados. Por Que Usar Funções? Reutilização de Código: Escreva a lógica uma vez e use-a em vários lugares. Modularização: Quebre problemas complexos em partes menores e mais gerenciáveis. Consistência: Garanta que uma lógica de negócio específica seja aplicada da mesma forma em todo o banco de dados. Manutenção Simplificada: Alterações na lógica precisam ser feitas em apenas um lugar. Criando Funções: Exemplos e Boas Práticas Vamos a alguns exemplos e, mais importante, às boas práticas!\n1. Função Escalar Simples Imagine que você precisa calcular o valor total de um imposto sobre um preço.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE FUNCTION dbo.CalcularImposto (@Preco DECIMAL(18, 2), @PercentualImposto DECIMAL(5, 2)) RETURNS DECIMAL(18, 2) AS BEGIN RETURN @Preco * (@PercentualImposto / 100); END; GO -- Exemplo de uso SELECT Produto, PrecoUnitario, dbo.CalcularImposto(PrecoUnitario, 10.00) AS ValorImposto, PrecoUnitario + dbo.CalcularImposto(PrecoUnitario, 10.00) AS PrecoTotal FROM MinhaTabelaDeProdutos; Dica de Performance: Funções escalares, especialmente as que realizam operações complexas ou acessam dados, podem levar a problemas de performance se chamadas para cada linha em grandes conjuntos de resultados (o temido RBAR - Row By Agonizing Row). Pense se a lógica não poderia ser resolvida diretamente na sua consulta principal ou se uma iTVF seria mais adequada.\n2. Função com Valor de Tabela (Inline TVF) Se você precisa retornar um conjunto de resultados baseado em parâmetros, as iTVFs são suas melhores amigas para performance. Elas são tratadas pelo otimizador de consultas de forma muito eficiente.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 CREATE FUNCTION dbo.ObterProdutosPorCategoria (@Categoria NVARCHAR(50)) RETURNS TABLE AS RETURN ( SELECT ProdutoID, NomeProduto, Preco FROM Produtos WHERE Categoria = @Categoria ); GO -- Exemplo de uso SELECT p.ProdutoID, p.NomeProduto, p.Preco FROM dbo.ObterProdutosPorCategoria(\u0026#39;Eletrônicos\u0026#39;) AS p WHERE p.Preco \u0026gt; 500; Por que iTVF é melhor que mTVF na maioria dos casos? O otimizador de consultas pode \u0026ldquo;inliner\u0026rdquo; (expandir) a lógica da iTVF diretamente na consulta chamadora, permitindo otimizações mais abrangentes e uso eficaz de índices. mTVFs, por outro lado, muitas vezes materializam seus resultados em um worktable, o que pode impedir boas otimizações.\n3. Função com Valor de Tabela (Multi-statement TVF) - Cuidado! Embora úteis para lógica complexa que envolve múltiplas etapas ou variáveis, as mTVFs devem ser usadas com cautela devido ao seu potencial impacto na performance.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 -- CUIDADO: Este é um exemplo de mTVF, geralmente evite se uma iTVF for possível. CREATE FUNCTION dbo.ObterRelatorioVendasMensal (@Ano INT, @Mes INT) RETURNS @Relatorio TABLE ( ProdutoID INT, NomeProduto NVARCHAR(255), TotalVendas DECIMAL(18, 2), MediaVendasDiaria DECIMAL(18, 2) ) AS BEGIN INSERT INTO @Relatorio (ProdutoID, NomeProduto, TotalVendas) SELECT p.ProdutoID, p.NomeProduto, SUM(iv.Quantidade * iv.PrecoUnitario) FROM Produtos p INNER JOIN ItensVenda iv ON p.ProdutoID = iv.ProdutoID INNER JOIN Vendas v ON iv.VendaID = v.VendaID WHERE YEAR(v.DataVenda) = @Ano AND MONTH(v.DataVenda) = @Mes GROUP BY p.ProdutoID, p.NomeProduto; UPDATE @Relatorio SET MediaVendasDiaria = TotalVendas / DAY(EOMONTH(CAST(CAST(@Ano AS VARCHAR) + \u0026#39;-\u0026#39; + CAST(@Mes AS VARCHAR) + \u0026#39;-01\u0026#39; AS DATE))); RETURN; END; GO -- Exemplo de uso SELECT * FROM dbo.ObterRelatorioVendasMensal(2023, 7); Quando usar mTVF? Somente quando a lógica é realmente complexa e não pode ser expressa de forma concisa em uma iTVF, e após considerar outras alternativas como views, CTEs ou procedures que retornam resultados.\nBoas Práticas Essenciais Evite Funções Escalares em Colunas de Grandes Tabelas em Cláusulas WHERE ou JOIN: Isso impede o uso de índices e força um scan na tabela. Por exemplo, WHERE dbo.MinhaFuncao(Coluna) = 'Valor' é uma receita para problemas de performance. Prefira iTVFs a mTVFs: Sempre que possível, estruture sua lógica para se encaixar em uma Inline Table-valued Function para aproveitar as otimizações do SQL Server. Mantenha a Lógica Simples: Funções complexas demais podem se tornar difíceis de depurar e manter, além de potenciais problemas de performance. Use Schemas Adequados: Sempre prefixe suas funções com o schema apropriado (e.g., dbo.MinhaFuncao). Entenda o Impacto na Otimização: Funções podem \u0026ldquo;esconder\u0026rdquo; a intenção do otimizador de consultas, levando a planos de execução subótimos. Use SET STATISTICS IO ON e SET STATISTICS TIME ON, e analise o plano de execução para entender o que está acontecendo. Teste, Teste, Teste!: Teste suas funções com diferentes volumes de dados e cenários para garantir que elas performem bem e retornem os resultados esperados. As funções são uma parte fundamental do arsenal de qualquer desenvolvedor SQL Server. Usadas corretamente, elas podem aumentar drasticamente a eficiência e a manutenibilidade do seu código. Mas lembre-se: com grande poder vêm grandes responsabilidades de otimização!\nVocê já teve algum desafio interessante com funções no SQL Server? Compartilhe sua experiência nos comentários!\n","date":"2025-07-27T21:43:58-03:00","permalink":"http://localhost:1313/p/funcoes-sql-server/","title":"Funcoes SQL Server"},{"content":"Olá, pessoal! Como um velho amigo do SQL Server, sei que muitas vezes nos deparamos com a necessidade de integrar dados que residem em servidores diferentes. É aí que o Linked Server entra em cena, atuando como uma ponte robusta entre ambientes de dados distintos. Neste post, vamos mergulhar fundo no universo dos Linked Servers, desde sua configuração básica até dicas avançadas e solução de problemas. Prepare-se para desvendar todo o potencial dessa ferramenta!\nO Que é um Linked Server e Por Que Você Precisa Dele? Imagine que você tem dados de vendas em um servidor e informações de clientes em outro. Ou talvez seu sistema principal esteja em um SQL Server mais antigo, mas você precisa puxar dados de um sistema financeiro que roda em uma instância mais recente, ou até mesmo em um Oracle, DB2 ou MySQL. O Linked Server é exatamente o que você precisa!\nEm termos simples, um Linked Server é uma configuração no SQL Server que permite que uma instância do SQL Server execute comandos em outra fonte de dados OLE DB. Essa fonte de dados pode ser outra instância do SQL Server (local ou remota), um Oracle, um MySQL, um DB2, e até mesmo um arquivo Excel ou CSV (sim, você leu certo!). Ele atua como um \u0026ldquo;atalho\u0026rdquo; para dados externos, tornando possível realizar consultas, atualizações e até mesmo criar objetos em servidores remotos, tudo a partir da sua instância local.\nMas por que usar um Linked Server? As razões são inúmeras:\nIntegração de Dados: Unificar dados de diferentes fontes para relatórios, análises ou migrações. Consultas Distribuídas: Executar queries que abrangem múltiplos servidores sem a necessidade de transferir dados. Processos de ETL (Extract, Transform, Load): Facilitar a extração e carga de dados entre sistemas. Gerenciamento Centralizado: Acessar dados de diferentes ambientes a partir de uma única interface. Minimizar o Tráfego de Rede: Em alguns cenários, pode ser mais eficiente consultar os dados no servidor de origem do que transferir grandes volumes. Mãos à Obra: Configurando um Linked Server A configuração de um Linked Server pode parecer um bicho de sete cabeças à primeira vista, mas garanto que é mais simples do que parece. Vamos ver o passo a passo, tanto via SQL Server Management Studio (SSMS) quanto via T-SQL.\nVia SQL Server Management Studio (SSMS) Esta é a forma mais visual e intuitiva para quem está começando:\nConecte-se ao SSMS: Abra o SQL Server Management Studio e conecte-se à instância onde você deseja criar o Linked Server. Navegue até \u0026ldquo;Server Objects\u0026rdquo;: No Object Explorer, expanda \u0026ldquo;Server Objects\u0026rdquo;. Expanda \u0026ldquo;Linked Servers\u0026rdquo;: Dentro de \u0026ldquo;Server Objects\u0026rdquo;, expanda \u0026ldquo;Linked Servers\u0026rdquo;. Novo Linked Server: Clique com o botão direito em \u0026ldquo;Linked Servers\u0026rdquo; e selecione \u0026ldquo;New Linked Server\u0026hellip;\u0026rdquo;. Preencha as Informações: Uma nova janela \u0026ldquo;New Linked Server\u0026rdquo; será aberta. Aqui é onde a mágica acontece. General Page: Linked server: Dê um nome significativo ao seu Linked Server. Este será o nome que você usará nas suas consultas (ex: MEU_SERVER_REMOTO). Server type: SQL Server: Se você está se conectando a outra instância do SQL Server, selecione esta opção. Other data source: Para outras fontes de dados (Oracle, MySQL, Excel, etc.), selecione esta e escolha o provedor OLE DB apropriado. Para SQL Server, esta opção é mais genérica e permite especificar o provedor e a string de conexão manualmente. Product name: Para SQL Server, geralmente preenchemos com \u0026ldquo;SQL Server\u0026rdquo;. Para outros, o nome do produto (ex: \u0026ldquo;Oracle\u0026rdquo;). Data source: O nome ou endereço IP do servidor remoto. Se for uma instância nomeada (ex: SEUSQL\\INSTANCIA), use SEUSQL\\INSTANCIA. Provider string: Deixe em branco se for SQL Server padrão. Para outros provedores, pode ser necessário especificar parâmetros de conexão adicionais. Catalog: O nome do banco de dados padrão no servidor remoto para este Linked Server. Opcional, mas útil. Security Page: Esta é crucial para a autenticação. Not be made: Sem contexto de segurança. Não recomendado para a maioria dos cenários. Be made using the login\u0026rsquo;s current security context: A autenticação é feita usando as credenciais do usuário que está executando a consulta no servidor local. Útil em ambientes de domínio com autenticação Windows integrada. Be made using a security context that the login\u0026rsquo;s current security context does not support: Para usuários que não são mapeados. Be made using this security context: Esta é a opção mais comum e flexível. Você especifica um login remoto (usuário e senha) que será usado para acessar o servidor vinculado. Remote login: O nome de usuário no servidor remoto. With password: A senha para o usuário remoto. Add: Mapear logins específicos do servidor local para logins específicos do servidor remoto. Muito útil para granularidade de segurança. Server Options Page: Collation Compatible: Se os servidores tiverem diferentes configurações de collation e você precisa que o Linked Server trate isso. Data Access: Habilita ou desabilita o acesso a dados. RPC, RPC Out: Permite chamadas de procedimento remoto. Essencial para executar stored procedures remotas. Use Remote Collation: Usa a collation do servidor remoto. Clique em OK: Seu Linked Server está pronto! Via T-SQL (Transact-SQL) Para quem prefere a automação e o controle total, o T-SQL é o caminho. A sintaxe básica é a seguinte:\n1 2 3 4 5 6 7 8 9 10 11 12 EXEC sp_addlinkedserver @server = \u0026#39;MEU_SERVER_REMOTO\u0026#39;, -- Nome do Linked Server @srvproduct = \u0026#39;SQL Server\u0026#39;, -- Produto do servidor remoto (ex: \u0026#39;SQL Server\u0026#39;, \u0026#39;Oracle\u0026#39;) @provider = \u0026#39;SQLNCLI11\u0026#39;, -- Provedor OLE DB (SQLNCLI11 para SQL Server 2012 e superior, SQLOLEDB para versões mais antigas) @datasrc = \u0026#39;NOME_OU_IP_DO_SERVER_REMOTO\\INSTANCIA_REMOTO\u0026#39;; -- Fonte de dados (nome do servidor ou IP, com instância se aplicável) EXEC sp_addlinkedsrvlogin @rmtsrvname = \u0026#39;MEU_SERVER_REMOTO\u0026#39;, -- Nome do Linked Server @useself = \u0026#39;FALSE\u0026#39;, -- \u0026#39;TRUE\u0026#39; para usar contexto de segurança atual, \u0026#39;FALSE\u0026#39; para especificar login @locallogin = NULL, -- Login local (NULL para todos os logins locais) @rmtuser = \u0026#39;usuario_remoto\u0026#39;, -- Login remoto @rmtpassword = \u0026#39;sua_senha_secreta\u0026#39;; -- Senha do login remoto Observações importantes:\n@provider: Para SQL Server, SQLNCLI11 é o provedor recomendado para SQL Server 2012 e versões posteriores. Para versões mais antigas (até SQL Server 2008 R2), SQLOLEDB era o padrão. Certifique-se de ter o provedor instalado e registrado. @locallogin: Se você deseja que apenas um login específico no seu servidor local possa usar esse Linked Server, substitua NULL pelo nome do login local. Caso contrário, NULL permite que qualquer login local use o mapeamento. sp_addlinkedsrvlogin: Você pode usar sp_addlinkedsrvlogin múltiplas vezes para mapear diferentes logins locais para diferentes logins remotos, ou para mapear logins locais para o contexto de segurança atual (@useself = 'TRUE'). Testando e Usando Seu Linked Server Depois de configurar, é hora de testar!\nConsultando Dados A forma mais comum de usar um Linked Server é através de consultas de quatro partes:\n1 2 3 4 5 6 7 SELECT * FROM MEU_SERVER_REMOTO.NomeDoBancoDeDados.NomeDoSchema.NomeDaTabela; -- Exemplo real: SELECT c.NomeCliente, p.NomeProduto FROM MEU_SERVER_REMOTO.VendasDB.dbo.Clientes c INNER JOIN SEGUNDO_SERVER.EstoqueDB.dbo.Produtos p ON c.ProdutoID = p.ProdutoID; Você também pode usar a função OPENQUERY para consultas mais complexas ou para otimizar o desempenho, pois ela envia a consulta diretamente para o servidor remoto para ser executada lá, e não no servidor local.\n1 2 SELECT * FROM OPENQUERY(MEU_SERVER_REMOTO, \u0026#39;SELECT ClienteID, NomeCliente FROM VendasDB.dbo.Clientes WHERE DataRegistro \u0026gt; GETDATE() - 30\u0026#39;); A função OPENDATASOURCE é similar, mas permite especificar a fonte de dados ad-hoc, sem a necessidade de um Linked Server pré-configurado. Use com cautela, pois ela é menos segura e mais verbosa.\n1 2 3 SELECT * FROM OPENDATASOURCE(\u0026#39;SQLNCLI11\u0026#39;, \u0026#39;Data Source=NOME_OU_IP_DO_SERVER_REMOTO\\INSTANCIA_REMOTO;Initial Catalog=VendasDB;User ID=usuario_remoto;Password=sua_senha_secreta\u0026#39;) .VendasDB.dbo.Clientes; Executando Stored Procedures Remotas Sim, você pode! Isso é incrivelmente útil para orquestrar processos em diferentes servidores.\n1 EXEC MEU_SERVER_REMOTO.NomeDoBancoDeDados.dbo.MinhaStoredProcedureRemota @Parametro1 = \u0026#39;Valor\u0026#39;; Gerenciando e Solucionando Problemas Comuns Mesmo os especialistas em SQL Server enfrentam desafios com Linked Servers. Aqui estão alguns pontos importantes e dicas de troubleshooting:\nSegurança A segurança é primordial.\nPrincípio do Mínimo Privilégio: Conceda apenas as permissões necessárias ao login remoto. Não use sa ou contas com privilégios excessivos. Autenticação Windows vs. SQL Server: A autenticação Windows é mais segura, especialmente em ambientes de domínio. Se usar autenticação SQL Server, garanta senhas fortes e rotação regular. Mapeamento de Logins: Use sp_addlinkedsrvlogin para mapear logins locais para logins remotos específicos, aumentando a granularidade de segurança. Desempenho Consultas em Linked Servers podem ser mais lentas devido à latência de rede e ao otimizador de consultas.\nOPENQUERY: Sempre que possível, use OPENQUERY. Ele \u0026ldquo;empurra\u0026rdquo; a consulta para o servidor remoto, minimizando o tráfego de rede e aproveitando o otimizador de consultas do servidor de origem. Índices: Certifique-se de que as tabelas no servidor remoto que você está consultando tenham índices apropriados. Consultas Simples: Evite consultas complexas ou JOINs massivos entre servidores, se puder. Puxe apenas os dados necessários. Transferência de Dados: Para grandes volumes de dados, considere a replicação, SSIS ou outras ferramentas de ETL em vez de consultas diretas com Linked Server. Troubleshooting Comum \u0026ldquo;Login failed for user\u0026hellip;\u0026rdquo;: O erro mais comum. Verifique o nome de usuário e a senha configurados no sp_addlinkedsrvlogin (ou na aba Security do SSMS). Certifique-se de que o usuário remoto tenha permissão para acessar o banco de dados e as tabelas necessárias. \u0026ldquo;OLE DB provider \u0026lsquo;SQLNCLI11\u0026rsquo; for linked server \u0026lsquo;\u0026hellip;\u0026rsquo; returned message \u0026lsquo;No process is on the other end of the pipe.\u0026rsquo;\u0026rdquo;: Geralmente indica um problema de conectividade de rede (firewall bloqueando porta 1433), o serviço do SQL Server no servidor remoto está parado, ou o nome do servidor/instância está incorreto. \u0026ldquo;The OLE DB provider \u0026lsquo;SQLNCLI11\u0026rsquo; for linked server \u0026lsquo;\u0026hellip;\u0026rsquo; reported an error. Access denied.\u0026rdquo;: O usuário remoto tem acesso ao servidor, mas não tem permissão para a ação específica (SELECT, INSERT, UPDATE, DELETE) na tabela/view que você está tentando acessar. \u0026ldquo;Cannot initialize the data source object of OLE DB provider \u0026lsquo;\u0026hellip;\u0026rsquo; for linked server \u0026lsquo;\u0026hellip;\u0026rsquo;\u0026rdquo;: Problema com o provedor OLE DB. Ele pode não estar instalado, registrado corretamente, ou a string de conexão está incorreta. Timeout Errors: Consultas que demoram muito para responder podem ser interrompidas por timeouts. Ajuste as configurações de timeout do Linked Server nas opções do servidor (Server Options -\u0026gt; Connection Timeout, Query Timeout) ou via sp_serveroption. Excluindo um Linked Server Se você precisar remover um Linked Server:\n1 EXEC sp_dropserver \u0026#39;MEU_SERVER_REMOTO\u0026#39;, \u0026#39;droplogins\u0026#39;; O argumento 'droplogins' garante que os mapeamentos de login associados também sejam removidos.\nConsiderações Finais e Próximos Passos O Linked Server é uma ferramenta incrivelmente poderosa e versátil no arsenal de qualquer DBA ou desenvolvedor SQL Server. Com ele, você pode criar soluções robustas para integração de dados, consolidar informações e otimizar processos de negócios.\nNo entanto, como qualquer ferramenta poderosa, o Linked Server requer compreensão e bom senso. Não o use para tudo! Avalie sempre as necessidades do seu projeto:\nPara consultas ad-hoc rápidas entre servidores: O Linked Server é perfeito. Para integração de dados em larga escala ou processos de ETL complexos: Considere ferramentas como SQL Server Integration Services (SSIS), Azure Data Factory, ou outras soluções de orquestração de dados. Para manter cópias de dados sincronizadas: A Replicação do SQL Server ou Always On Availability Groups podem ser mais apropriadas. Espero que este guia detalhado tenha desmistificado o Linked Server para você. Ele é um excelente recurso para conectar mundos de dados e expandir as capacidades do seu ambiente SQL Server.\nSe você tiver alguma dúvida, sugestão ou quiser compartilhar suas experiências com Linked Servers, deixe um comentário abaixo! Adoraria saber como vocês estão usando essa ferramenta em seus projetos.\nAté a próxima, e bons códigos!\n","date":"2025-07-27T11:16:51-03:00","permalink":"http://localhost:1313/p/linked-server/","title":"Linked Server"},{"content":"Configuração de Logins no SQL Server Introdução A configuração de logins no SQL Server é uma das tarefas essenciais para garantir que o acesso ao banco de dados seja controlado adequadamente. Existem dois tipos principais de logins no SQL Server: logins do SQL Server e logins do Windows. Neste post, vamos explorar como configurar ambos os tipos de logins e discutir práticas recomendadas para gerenciar o acesso de usuários.\n1. Criando Logins no SQL Server No SQL Server, você pode criar logins através do Management Studio ou via T-SQL. Vamos começar com um exemplo básico de como criar um login de SQL Server:\n1 CREATE LOGIN NovoUsuario WITH PASSWORD = \u0026#39;SenhaSegura123\u0026#39;; Este comando cria um login com o nome NovoUsuario e uma senha associada. Após a criação, você precisa conceder permissões para esse login. Isso é feito associando-o a uma conta de usuário dentro de um banco de dados específico.\nExemplo de criação de login com configuração de senha expirada: 1 2 3 4 CREATE LOGIN NovoUsuario WITH PASSWORD = \u0026#39;SenhaSegura123\u0026#39;, CHECK_POLICY = ON, CHECK_EXPIRATION = ON; Neste exemplo, a política de senha e a expiração de senha são habilitadas, forçando o usuário a alterar a senha após o prazo determinado.\n2. Criando Logins do Windows Você também pode criar logins baseados no Windows, permitindo que os usuários acessem o banco de dados utilizando suas credenciais do sistema operacional:\n1 CREATE LOGIN [DOMINIO\\Usuario] FROM WINDOWS; Neste caso, o login é criado utilizando a conta do Windows DOMINIO\\Usuario.\nLogins do Windows vs SQL Server Logins do SQL Server: São úteis em cenários onde os usuários não fazem parte de um domínio ou quando você precisa de autenticação exclusiva no SQL Server. Logins do Windows: São recomendados quando a segurança do domínio e a administração de contas de usuários já estão sendo feitas no nível do sistema operacional. 3. Associando Logins aos Bancos de Dados Depois de criar o login, o próximo passo é associá-lo a um banco de dados. Isso é feito criando um usuário no banco de dados para o login:\n1 2 USE MeuBancoDeDados; CREATE USER NovoUsuario FOR LOGIN NovoUsuario; O comando acima cria um usuário no banco de dados MeuBancoDeDados associado ao login NovoUsuario.\nExemplo de associação de login do Windows: 1 2 USE MeuBancoDeDados; CREATE USER [DOMINIO\\Usuario] FOR LOGIN [DOMINIO\\Usuario]; 4. Concedendo Permissões Após associar o login ao banco de dados, você deve conceder as permissões necessárias. Por exemplo, para conceder permissões de leitura e gravação:\n1 GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::dbo TO NovoUsuario; Isso permite que o usuário NovoUsuario tenha permissões de leitura e escrita em todas as tabelas dentro do esquema dbo.\nExemplo de concessão de permissões a logins de Windows: 1 GRANT EXECUTE ON SCHEMA::dbo TO [DOMINIO\\Usuario]; Neste caso, o login do Windows [DOMINIO\\Usuario] recebe permissão para executar stored procedures no esquema dbo.\n5. Considerações de Segurança Senhas fortes: Sempre utilize senhas fortes para logins do SQL Server. Senhas fracas são um dos principais vetores de ataque. Privilégios mínimos: Evite usar logins com permissões administrativas, a menos que absolutamente necessário. Utilize o princípio do \u0026ldquo;menor privilégio\u0026rdquo;. Logins do Windows: Sempre que possível, use logins do Windows, pois eles aproveitam a segurança e os controles de autenticação do sistema operacional. Auditoria: É importante configurar auditoria de segurança para monitorar atividades de logins, como tentativas de login falhas e logins com privilégios elevados. Conclusão A configuração de logins no SQL Server é uma tarefa fundamental para garantir a segurança e o controle de acesso aos dados. Ao criar logins adequados e aplicar as melhores práticas de segurança, como senhas fortes e permissões mínimas, você estará protegendo seu ambiente de banco de dados contra acessos não autorizados. Além disso, é importante revisar regularmente as permissões e garantir que os logins sejam mantidos atualizados e em conformidade com as políticas de segurança da organização.\n","date":"2025-07-26T22:49:15-03:00","image":"http://localhost:1313/p/logins-sql-server/1_hu_7a63d7ea16516fb7.jpg","permalink":"http://localhost:1313/p/logins-sql-server/","title":"Logins SQL Server"},{"content":"🚀 Novidades do Power BI – Julho 2025 🆕 Principais Destaques Integração aprimorada com Microsoft 365 Facilita a colaboração e uso de recursos empresariais. Copilot mais inteligente Geração de insights automatizados e contextualizados. Compatibilidade com Power BI Report Server e SQL Server 2025 Melhora a distribuição de relatórios on-premises. 🛠️ Atualizações Técnicas – Power BI Desktop Versão atual: 2.144.1378.0\nData de lançamento: 3 de julho de 2025\n🔧 Junho 2025 QFE 3 Corrigido erro ao atualizar tabelas com model.abf desatualizado. Mensagem de erro do Copilot aprimorada para indicar região não suportada. 🔧 Junho 2025 QFE 1 Correção na validação de atualização incremental com múltiplas fontes. Ajustes na interface de alto contraste no diálogo \u0026ldquo;Manage Relationships\u0026rdquo;. Correção na formatação condicional que removia cores por engano. 📹 Vídeo Oficial Assista ao vídeo com as principais novidades no canal oficial do Power BI:\n➡️ Power BI Update – July 2025 Feature Summary\n📌 Resumo Rápido Categoria Atualização Microsoft 365 Integração aprimorada Copilot Mais inteligente e contextual Report Server Suporte a PBIRS e SQL Server 2025 Correções Estabilidade em refresh, interface e visualizações Versão atual 2.144.1378.0 – 03/07/2025 📥 Atualização Recomendável A versão de julho é a mais recente e recomendada.\n👉 Clique aqui para baixar o Power BI Desktop\nMais detalhes estão disponíveis no registro completo de alterações.\nFonte: Power BI Desktop – Latest Update\n","date":"2025-07-25T21:43:03-03:00","permalink":"http://localhost:1313/p/novidadespowerbijulho2025/","title":"NovidadesPowerBiJulho2025"}]