Arquivo

Archive for the ‘Sql Server’ Category

Exibir usuário com permissão de SA no SQL Server!

12 de abril de 2016 Deixe um comentário
Microsfot SQL Server

Microsfot SQL Server

Por uma questão de segurança, é comum listar os usuários que tem permissão de sysadmin no banco. Sempre é bom ficar verificando essa lista. Segue uma query para listar usuários com permissão de SA.

SELECT
p.name AS [Name] ,r.type_desc,r.is9_disabled,r.create_date , r.modify_date,r.default_database_name
FROM
sys.server_principals r
INNER JOIN sys.server_role_members m ON r.principal_id = m.role_principal_id
INNER JOIN sys.server_principals p ON
p.principal_id = m.member_principal_id
WHERE r.type = ‘R’ and r.name = N’sysadmin’

A query acima lista os usuários com permissão de sysadmin.

Anúncios

Copiar Tabela SQL (MYSQL) ou duplicar

21 de janeiro de 2014 Deixe um comentário
Comandos SQl e Mysql

Comandos Sql e Mysql

Duplicar ou copiar uma tabela inteira para outra no MYSQL E SQL SERVER.

Hoje tive que fazer um update daqueles em uma tabela do Mysql, para poder melhorar os índices. Entretanto, como estou acostumado com o SQL Server, apanhei um pouco na hora de escrever a sintaxe correta no MYSQL. Por esta razão estou postando os comandos tanto do SQL SERVER quanto do MYSQL para o dump da tabela.

Lembrando que fazer cópia de uma tabela antes de aplicar um update complicado, é muito importante, pois assim, você não precisa restaurar o banco todo, mas sim apenas voltar a tabela em questão!

Para ambos os casos ( Mysql e Sql) o comando em questão é o INSERT INTO junto com um select. Ou seja, ele faz uma consulta, e depois insere esta consulta em algum lugar.

1 º) SQL SERVER

USE NOME DO BANCO
SELECT * INTO TABELA_NOVA FROM TABELA_ORIGINAL

2 º) MYSQL

CREATE TABLE tabela_nova LIKE tabela_original;
INSERT INTO tabela_nova SELECT * FROM tabela_original;

A diferença além da sintaxe, basicamente é que no Mysql você deve primeiro criar a tabela_nova, antes de executar o comando INSERT INTO, enquanto que no Sql Server você não precisa criar a tabela primeiro, no momento do INSERT INTO, a tabela_nova é criada com a mesma estrutura da tabela_original .

Categorias:Banco de Dados, Mysql, Sql Server Tags:

Alterando o Collate Default do Servidor SQL Server

21 de março de 2013 Deixe um comentário
SQL

Na hora de instalar o MS SQL nem sempre instalamos com o Collate certo e posteriormente queremos mudar o mesmo, fiz isto algumas vezes e sempre recorro ao meu email para lembrar de como eu fiz. Acredito que mais pessoas tenham tido essa dor de cabeça, portanto segue um mini tuto para ajudar nesta tarefa.

Este procedimento vem funcionando desde o SQL 2005, ou seja funciona no SQL 2008 e 2012. Mas faça isso por sua conta em risco, o responsável pelo seu banco de dados é você mesmo que administra ele, não eu! Esse procedimento eu faço nos meus e funciona normal!

O que é Collation de uma Base de dados, como alterar?
Existem configurações para conjuntos de caracteres e Collations em quatro níveis: servidor, banco de dados, tabela e conexão. Collation nada mais é que a codificação de caracteres existente no Banco de Dados. Quando você realiza a migração do conteúdo de um banco de dados, algumas vezes, pode haver conflitos no collation do banco migrado. O resultado deste conflito é a ausência de caracteres especiais quando informações são consultadas no banco. Por exemplo: Você cadastrou a palavra “Chapéu” no seu banco de dados, mas quando a programação do seu site busca este item, retorna o resultado “Chap?u”. Ou seja, os caracteres com acentuação como (é, ã, õ, etc.) são substituídos pelo sinal ”?” (interrogação).
Resumindo, quando você emite um relatório e as informações não sãe como deveriam, muito provavelmente é conflito de collate.

a – Recomendo fortemente um backup das bases, include as system. Lembrem-se, só Deus salva, o resto faz backup.
b – Certifique-se que você não possui nenhuma base de dados em readonly, restoring ou qualquer outro status que impeça sua alteração e garanta que as bases não estão sem espaço livre.
c – Verifique o Collate default atual do servidor, com a query:

SELECT SERVERPROPERTY(‘servername’) As “Nome do Servidor”,
SERVERPROPERTY(‘productversion’) As Versão,
SERVERPROPERTY (‘productlevel’) As “Service Pack”,
SERVERPROPERTY (‘edition’) As Edição,
databasepropertyex(‘master’,’collation’) as “Collation”,
@@Version As “Sistema Operacional”

O resultado deverá ser algo como a imagem abaixo. Nota-se que o collate atual do meu servidor é SQL_Latin1_General_CP1_CI_AS

Query collate!

d – Pare o serviço do SQL Server. É possível usar vários métodos, um deles é parar os serviços usando o utilitário SQL Server Configuration Manager (sqlservermanager10.msc) como faço na figura abaixo.

Stopando SQL Server

e – No prompt de comando vá até o diretório de instalação do SQL Server. Localize o arquivo sqlservr.exe e execute sqlservr -m -T4022 -T3659 -q”collate_que_deseja_utilizar”.
Observação importante: O -T tem que ser maiúsculo e caso a instalação o SQL Server estiver utilizando um nome de instância, a opção -s<nome_da_instância> deve ser adicionada.

Acessando diretório e comando alter Collate!

Comando: sqlservr.exe -m -T4022 -T3659 -q”SQL_Latin1_General_CP1_CI_AI

f – O comando fará com que o SQL Server seja iniciado em modo Single-User e irá alterar o collate do servidor e todas as bases para o collate especificado no opção -q.
g – O final do comando vai ser apresentado com a mensagem “Recovery is Complete.”. Quando isso aparecer você dá Ctrl+C para finalizar e deverá aparecer mais 4 mensagens do SQL e voltará a solicitar comando no prompt, acusando que o comando anterior foi executado e finalizado. Conforme tela abaixo.

Finalização do comando Alter Collate!

i – Pronto, agora reinicie o MSSQL Server e execute a query novamente para certificar-se que o collate foi alterado.

SELECT SERVERPROPERTY(‘servername’) As “Nome do Servidor”,
SERVERPROPERTY(‘productversion’) As Versão,
SERVERPROPERTY (‘productlevel’) As “Service Pack”,
SERVERPROPERTY (‘edition’) As Edição,
databasepropertyex(‘master’,’collation’) as “Collation”,
@@Version As “Sistema Operacional”

A query acima, deverá retornar algo como a imagem a baixo e assim alteramos o collate SQL_Latin1_General_Cp1_CI_AS para SQL_Latin1_General_Cp1_CS_AI.

Query Collate - Confirmando alteração do Collate!

Prontinho moçada!

Boa sorte ae! []’s