Renomear Primary key no SQL Server

Fala pessoal, tudo bem?


Post hoje é só pra passar um script parar renomear as chaves primárias no sql server, que normalmente são criadas com um nome aleatório quando não são criadas explicitamente com um nome durante a criação da tabela, padronizando então o nome para: “PK_” + nome da tabela.

Para fazer a correção basta executar o script abaixo no contexto do banco de dados desejado.

Sugiro que faça testes antes de executar em um ambiente de produção.

DROP TABLE IF EXISTS #tab
GO

SELECT 
    SCHEMA_NAME(schema_id) AS SchemaName, 
    name AS PrimaryKey,
	OBJECT_NAME(parent_object_id) tabela,
	'EXEC sp_rename '''+ SCHEMA_NAME(schema_id) +'.' +  name +''''+','+'''PK_' +  OBJECT_NAME(parent_object_id) + '''' AS script
	INTO #tab
FROM sys.objects  
WHERE name <> 'PK_' +  OBJECT_NAME(parent_object_id) + ''
AND type = 'PK'

SET NOCOUNT ON  

DECLARE @script NVARCHAR(1000)
WHILE EXISTS (SELECT * FROM #tab)
BEGIN
	SELECT TOP 1 @script = script FROM #tab 
	PRINT @script
	EXEC sp_executesql @script

	DELETE FROM #tab WHERE script = @script

END

Caso queira apenas verificar quais objetos serão alterados, você pode executar somente o select abaixo e verificar a coluna script, conforme imagem abaixo:

SELECT 
    SCHEMA_NAME(schema_id) AS SchemaName, 
    name AS PrimaryKey,
	OBJECT_NAME(parent_object_id) tabela,
	'EXEC sp_rename '''+ SCHEMA_NAME(schema_id) +'.' +  name +''''+','+'''PK_' +  OBJECT_NAME(parent_object_id) + '''' AS script

FROM sys.objects  
WHERE name <> 'PK_' +  OBJECT_NAME(parent_object_id) + ''
AND type = 'PK'

Então é isso pessoal, esse script faz parte da “saga” de sincronização dos bancos de dados de um cliente.

Abs

Deixe um comentário