Já utiliza ou quer começar a utilizar o CDC (Change Data Capture)?
Para habilitar o CDC em uma Database é muito simples, basta utilizar o script abaixo:
USE [databaseName] <span>EXEC sys.sp_cdc_enable_d</span>b
Já utiliza ou quer começar a utilizar o CDC (Change Data Capture)?
Para habilitar o CDC em uma Database é muito simples, basta utilizar o script abaixo:
USE [databaseName] <span>EXEC sys.sp_cdc_enable_d</span>b
Já restaurou uma database em outro ambiente e precisou ajustar os usuários órfãos?
Os usuários órfãos existem para logins que são criados no nível de instância do SQL Server e portanto são armazenados na database master. Os usuários acabam se tornando órfãos quando você restaura essa database em outra instância e o login não existe no nível de instância, mas existe no nível de database.
Para identificar os usuários órfãos em uma determinada database você pode utilizar a consulta abaixo:
SELECT dp.type_desc, dp.SID, dp.name AS user_name FROM sys.database_principals AS dp LEFT JOIN sys.server_principals AS sp ON dp.SID = sp.SID WHERE sp.SID IS NULL AND authentication_type_desc = 'INSTANCE'
Retorno:
Para corrigir um usuário órfão você pode usar as duas opções abaixo:
Opção 1:
CREATE LOGIN [loginName] WITH PASSWORD = 'loginPassword', SID = 0xF4E44137DEB63E4783109C6C06E80BBE ALTER USER [userName] WITH Login = [loginName]
OBS: O valor do parâmetro SID deve ser preenchido com o valor capturado a partir da consulta anterior utilizada para identificar os usuários órfãos.
Opção 2:
EXECUTE sp_change_users_login AUTO_FIX, 'loginUsername'
Referências:
Já precisou criar um login em uma database secundária de Log Shipping?
É simples.
Execute a consulta abaixo no servidor primário do Log Shipping e copie o valor do campo sid.
select name, sid from master..syslogins where name in ('loginUsername')
Execute o comando abaixo no servidor secundário do Log Shipping preenchendo o valor da variável @sid com o conteúdo copiado na consulta anterior:
exec sp_addlogin 'loginUsername', @passwd='loginPassword', @sid=0xC8F35F87336B2D49AA7900EED64D83FE
Referências:
Você precisa listar as tabelas com CDC habilitado?
Apenas utilize o script abaixo dentro da sua database com CDC habilitado.
select name from sys.tables where is_tracked_by_cdc = 1 order by name
Retorno:
Espero que ajude!
Você precisa listar as databases com CDC habilitado?
Apenas use o script abaixo.
SELECT name, is_cdc_enabled FROM sys.databases WHERE database_id > 4 AND is_cdc_enabled = 1 ORDER BY name
Retorno:
Espero que ajude!
Galera,
Recebi uma dúvida hoje: “É possível atualizar uma coluna IDENTITY de um registro específico?”
Respondendo: a atualização direta com a utilização do comando UPDATE não é permitida. Mas, se você realmente precisa realizar este procedimento por algum motivo específico, há uma solução de contorno bem simples.
Primeiro vamos criar o cenário para realizarmos o procedimento.
Agora vamos fazer uma tentativa de atualização da coluna id criada como IDENTITY na tabela TesteIdentity:
Como podemos ver, ocorreu o erro 8102 “Cannot update identity column ‘id'”, pois não é possível atualizarmos diretamente um campo com a propriedade IDENTITY.
Para resolvermos este problema vamos precisar apenas de dois passos:
Agora que já sabemos a solução, vamos tentar atualizar o mesmo registro do cenário criado anteriormente utilizando os passos acima.
O resultado é a “atualização” do id = 1 para id = 20, conforme abaixo:
IMPORTANTE:
Conferindo o valor atual da IDENTITY. Notem que o valor atual é 21.
Alterando o valor da IDENTITY para 30:
Conferindo novamente o valor atual da IDENTITY. Notem que agora o valor atual foi alterado para 30, conforme comando executado anteriormente. O valor 21 que ainda permanece é referente ao valor máximo da coluna IDENTITY existente na tabela:
Inserindo um novo registro na tabela TesteIdentity:
Como podemos ver após alterarmos o valor da IDENTITY para 30, o próximo valor inserido foi o 31, conforme evidência abaixo:
Por hoje é isso galera! Se tiverem dúvidas, críticas ou sugestões de assuntos podem enviar pelos comentários ou até mesmo por e-mail: felipe@lauffer.me
Obrigado!