Partilhar via


sp_addextendedproperty (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Adiciona uma nova propriedade estendida a um objeto de banco de dados.

Transact-SQL convenções de sintaxe

Sintaxe

sp_addextendedproperty
    [ @name = ] N'name'
    [ , [ @value = ] value ]
    [ , [ @level0type = ] 'level0type' ]
    [ , [ @level0name = ] N'level0name' ]
    [ , [ @level1type = ] 'level1type' ]
    [ , [ @level1name = ] N'level1name' ]
    [ , [ @level2type = ] 'level2type' ]
    [ , [ @level2name = ] N'level2name' ]
[ ; ]

Argumentos

[ @name = ] N'nome'

O nome da propriedade a ser adicionada. @name é sysname, sem padrão, e não pode ser NULL. Os nomes podem incluir cadeias de caracteres em branco ou não alfanuméricos e valores binários.

[ @value = ] valor

O valor a ser associado à propriedade. @value é sql_variant, com um padrão de NULL. O tamanho do @value não pode ser superior a 7.500 bytes.

@level0type [ = ] 'level0type'

O tipo de objeto de nível 0. @level0type é varchar(128), com um padrão de NULL.

As entradas válidas são:

  • ASSEMBLY
  • CONTRACT
  • EVENT NOTIFICATION
  • FILEGROUP
  • MESSAGE TYPE
  • PARTITION FUNCTION
  • PARTITION SCHEME
  • REMOTE SERVICE BINDING
  • ROUTE
  • SCHEMA
  • SERVICE
  • USER
  • TRIGGER
  • TYPE
  • PLAN GUIDE
  • NULL

Importante

A capacidade de especificar USER como um tipo de nível 0 em uma propriedade estendida de um objeto de tipo de nível 1 será removida em uma versão futura do SQL Server. Em vez disso, use SCHEMA como o tipo de nível 0. Por exemplo, ao definir uma propriedade estendida em uma tabela, especifique o esquema da tabela em vez de um nome de usuário. A capacidade de especificar TYPE como tipo de nível 0 será removida em uma versão futura do SQL Server. Para TYPE, use SCHEMA como o tipo de nível 0 e TYPE como o tipo de nível 1.

@level0name [ = ] N'level0name'

O nome do tipo de objeto de nível 0 especificado. @level0name é sysname, com um padrão de NULL.

@level1type [ = ] «level1type»

O tipo de objeto de nível 1. @level1type é varchar(128), com um padrão de NULL.

As entradas válidas são:

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • LOGICAL FILE NAME
  • PROCEDURE
  • QUEUE
  • RULE
  • SEQUENCE
  • SYNONYM
  • TABLE
  • TABLE_TYPE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • NULL

@level1name [ = ] N'level1name'

O nome do tipo de objeto de nível 1 especificado. @level1name é sysname, com um padrão de NULL.

@level2type [ = ] 'level2type'

O tipo de objeto de nível 2. @level2type é varchar(128), com um padrão de NULL.

As entradas válidas são:

  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • PARAMETER
  • TRIGGER
  • NULL

@level2name [ = ] N'level2name'

O nome do tipo de objeto de nível 2 especificado. @level2name é sysname, com um padrão de NULL.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

Quando você especifica propriedades estendidas, os objetos em um banco de dados do SQL Server são classificados em três níveis: 0, 1 e 2. O nível 0 é o nível mais alto e é definido como objetos contidos no escopo do banco de dados. Os objetos de nível 1 estão contidos em um esquema ou escopo de usuário, e os objetos de nível 2 estão contidos em objetos de nível 1. As propriedades estendidas podem ser definidas para objetos em qualquer um desses níveis.

As referências a um objeto em um nível devem ser qualificadas com os nomes dos objetos de nível superior que os possuem ou contêm. Por exemplo, ao adicionar uma propriedade estendida a uma coluna de tabela (nível 2), você também deve especificar o nome da tabela (nível 1) que contém a coluna e o esquema (nível 0) que contém a tabela.

Se todos os tipos de objeto e nomes forem nulos, a propriedade pertencerá ao próprio banco de dados atual.

Propriedades estendidas não são permitidas em objetos do sistema, objetos fora do escopo de um banco de dados definido pelo usuário ou objetos não listados em Argumentos como entradas válidas.

Propriedades estendidas não são permitidas em tabelas com otimização de memória.

Replicar propriedades estendidas

As propriedades estendidas são replicadas somente na sincronização inicial entre o Publicador e o Assinante. Se você adicionar ou modificar uma propriedade estendida após a sincronização inicial, a alteração não será replicada. Para obter mais informações sobre como replicar objetos de banco de dados, consulte Publicar dados e objetos de banco de dados.

Esquema versus usuário

Não recomendamos especificar USER como um tipo de nível 0 quando você aplica uma propriedade estendida a um objeto de banco de dados, porque isso pode causar ambiguidade na resolução de nomes. Por exemplo, suponha que o usuário Mary possui dois esquemas (Mary e MySchema), e esses esquemas contêm uma tabela chamada MyTable. Se Mary adicionar uma propriedade estendida à tabela MyTable e especificar @level0type = 'USER', @level0name = N'Mary', não ficará claro a qual tabela a propriedade estendida será aplicada. Para manter a compatibilidade com versões anteriores, o SQL Server aplica a propriedade à tabela contida no esquema chamado Mary.

Permissões

Os membros das funções de banco de dados db_owner e db_ddladmin fixas podem adicionar propriedades estendidas a qualquer objeto, com a seguinte exceção: db_ddladmin não é possível adicionar propriedades ao próprio banco de dados ou a usuários ou funções.

Os usuários podem adicionar propriedades estendidas aos objetos que possuem ou têm permissões ALTER ou CONTROL.

Exemplos

Um. Adicionar uma propriedade estendida a um banco de dados

O exemplo a seguir adiciona o nome Caption da propriedade com um valor de ao AdventureWorks2022 Sample OLTP Database banco de dados de AdventureWorks2025 exemplo.

USE AdventureWorks2022;
GO

--Add a caption to the AdventureWorks2022 Database object itself.
EXECUTE sp_addextendedproperty
    @name = N'Caption',
    @value = 'AdventureWorks2022 Sample OLTP Database';

B. Adicionar uma propriedade estendida a uma coluna em uma tabela

O exemplo a seguir adiciona uma propriedade caption à coluna PostalCode na tabela Address.

USE AdventureWorks2022;
GO

EXECUTE sp_addextendedproperty
    @name = N'Caption', @value = 'Postal code is a required column.',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

C. Adicionar uma propriedade de máscara de entrada a uma coluna

O exemplo a seguir adiciona uma propriedade 99999 or 99999-9999 or #### ### de máscara de entrada à coluna PostalCode na tabela Address.

USE AdventureWorks2022;
GO

EXECUTE sp_addextendedproperty
    @name = N'Input Mask ', @value = '99999 or 99999-9999 or #### ###',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

D. Adicionar uma propriedade estendida a um grupo de arquivos

O exemplo a seguir adiciona uma propriedade estendida ao PRIMARY grupo de arquivos.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_DescriptionExample', @value = N'Primary filegroup for the AdventureWorks2022 sample database.',
    @level0type = 'FILEGROUP', @level0name = N'PRIMARY';
GO

E. Adicionar uma propriedade estendida a um esquema

O exemplo a seguir adiciona uma propriedade estendida ao HumanResources esquema.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_DescriptionExample', @value = N'Contains objects related to employees and departments.',
    @level0type = 'SCHEMA', @level0name = N'HumanResources';

F. Adicionar uma propriedade estendida a uma tabela

O exemplo a Address seguir adiciona uma propriedade estendida à Person tabela no esquema.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_DescriptionExample', @value = N'Street address information for customers, employees, and vendors.',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address';
GO

G. Adicionar uma propriedade estendida a uma função

O exemplo a seguir cria uma função de aplicativo e adiciona uma propriedade estendida à função. Substitua <password> por uma senha forte.

USE AdventureWorks2022;
GO

CREATE APPLICATION ROLE Buyers
    WITH PASSWORD = '<password>';
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_Description', @value = N'Application Role for the Purchasing Department.',
    @level0type = 'USER', @level0name = N'Buyers';

H. Adicionar uma propriedade estendida a um tipo

O exemplo a seguir adiciona uma propriedade estendida a um tipo.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_Description', @value = N'Data type (alias) to use for any column that represents an order number. For example a sales order number or purchase order number.',
    @level0type = 'SCHEMA', @level0name = N'dbo',
    @level1type = 'TYPE', @level1name = N'OrderNumber';

Eu. Adicionar uma propriedade estendida a um usuário

O exemplo a seguir cria um usuário e adiciona uma propriedade estendida ao usuário.

USE AdventureWorks2022;
GO

CREATE USER CustomApp WITHOUT LOGIN;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_Description', @value = N'User for an application.',
    @level0type = 'USER', @level0name = N'CustomApp';