Aracılığıyla paylaş


sp_addextendedproperty (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Veritabanı nesnesine yeni bir genişletilmiş özellik ekler.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Tartışmalar

[ @name = ] N'adı'

Eklenecek özelliğin adı. @namesysname'dir ve varsayılan değer yoktur ve olamaz NULL. Adlar boş veya alfasayısal olmayan karakter dizeleri ve ikili değerler içerebilir.

[ @value = ] değer

Özelliğiyle ilişkilendirilecek değer. @value, varsayılan olarak NULL. @value boyutu 7.500 bayttan fazla olamaz.

[ @level0type = ] 'level0type'

Düzey 0 nesnesinin türü. @level0type , varsayılan değeri olan varchar(128)'dir NULL.

Geçerli girişler şunlardır:

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

Önemli

Düzey-1 türü nesnesinin genişletilmiş özelliğinde düzey-0 türü olarak belirtebilme USER özelliği, SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Bunun yerine düzey-0 türü olarak kullanın SCHEMA . Örneğin, bir tabloda genişletilmiş özellik tanımlarken, kullanıcı adı yerine tablonun şemasını belirtin. Düzey-0 türü olarak belirtme TYPE özelliği, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. TÜR için düzey-0 türü ve SCHEMA düzey-1 türü olarak kullanınTYPE.

[ @level0name = ] N'level0name'

Belirtilen düzey 0 nesne türünün adı. @level0namesysname değeridir ve varsayılan değeri .NULL

[ @level1type = ] 'level1type'

Düzey 1 nesnesinin türü. @level1type , varsayılan değeri olan varchar(128)'dir NULL.

Geçerli girişler şunlardır:

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

[ @level1name = ] N'level1name'

Belirtilen düzey 1 nesne türünün adı. @level1namesysname değeridir ve varsayılan değeri .NULL

[ @level2type = ] 'level2type'

Düzey 2 nesnesinin türü. @level2type , varsayılan değeri olan varchar(128)'dir NULL.

Geçerli girişler şunlardır:

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

[ @level2name = ] N'level2name'

Belirtilen düzey 2 nesne türünün adı. @level2namesysname değeridir ve varsayılan değeri .NULL

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Açıklamalar

Genişletilmiş özellikler belirttiğinizde, SQL Server veritabanındaki nesneler üç düzeye ayrılır: 0, 1 ve 2. Düzey 0 en yüksek düzeydir ve veritabanı kapsamında yer alan nesneler olarak tanımlanır. Düzey 1 nesneleri bir şemada veya kullanıcı kapsamında, düzey 2 nesneleri ise düzey 1 nesneleri tarafından bulunur. Bu düzeylerden herhangi birinde nesneler için genişletilmiş özellikler tanımlanabilir.

Bir düzeydeki bir nesneye başvurular, sahip olan veya bunları içeren üst düzey nesnelerin adlarıyla nitelenmelidir. Örneğin, bir tablo sütununa (düzey 2) genişletilmiş özellik eklediğinizde, sütunu içeren tablo adını (düzey 1) ve tabloyu içeren şemayı (düzey 0) da belirtmeniz gerekir.

Tüm nesne türleri ve adları null ise, özellik geçerli veritabanının kendisine aittir.

Genişletilmiş özelliklere sistem nesnelerinde, kullanıcı tanımlı veritabanı kapsamı dışındaki nesnelerde veya Bağımsız Değişkenler'de geçerli girişler olarak listelenmeyen nesnelerde izin verilmez.

Bellek için iyileştirilmiş tablolarda genişletilmiş özelliklere izin verilmez.

Genişletilmiş özellikleri çoğaltma

Genişletilmiş özellikler yalnızca Yayımcı ile Abone arasındaki ilk eşitlemede çoğaltılır. İlk eşitlemeden sonra genişletilmiş bir özellik ekler veya değiştirirseniz, değişiklik çoğaltılamaz. Veritabanı nesnelerini çoğaltma hakkında daha fazla bilgi için bkz. Veri Yayımlama ve Veritabanı Nesneleri.

Şema ve kullanıcı karşılaştırması

Bir veritabanı nesnesine USER genişletilmiş özellik uyguladığınızda düzey 0 türü olarak belirtilmesi önerilmez, çünkü bu ad çözümleme belirsizliğine neden olabilir. Örneğin, kullanıcının Mary iki şemaya (Mary ve ) sahip olduğunu ve MySchemabu şemaların her ikisinin de adlı MyTablebir tablo içerdiğini varsayalım. Mary tabloya MyTable genişletilmiş bir özellik ekler ve belirtirse @level0type = 'USER', @level0name = N'Mary', genişletilmiş özelliğin hangi tabloya uygulandığı açık değildir. Geriye dönük uyumluluğu korumak için SQL Server, adlı Maryşemada bulunan tabloya özelliğini uygular.

İzinler

db_owner ve db_ddladmin sabit veritabanı rollerinin üyeleri, aşağıdaki özel durum dışında herhangi bir nesneye genişletilmiş özellikler ekleyebilir: db_ddladmin, veritabanının kendisine veya kullanıcılara veya rollere özellik ekleyemez.

Kullanıcılar, sahip oldukları nesnelere genişletilmiş özellikler ekleyebilir veya ÜZERINDE ALTER veya CONTROL izinlerine sahip olabilir.

Örnekler

A. Veritabanına genişletilmiş özellik ekleme

Aşağıdaki örnek, örnek veritabanına değeri CaptionAdventureWorks2022 Sample OLTP Database olan özellik adını AdventureWorks2025 ekler.

USE AdventureWorks2022;
GO

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

B. Tablodaki bir sütuna genişletilmiş özellik ekleme

Aşağıdaki örnek, tablosundaki PostalCodesütununa Address bir resim yazısı özelliği ekler.

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. Sütuna giriş maskesi özelliği ekleme

Aşağıdaki örnek, tablosundaki 99999 or 99999-9999 or #### ###sütununa PostalCode bir giriş maskesi özelliği Address ekler.

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. Dosya grubuna genişletilmiş özellik ekleme

Aşağıdaki örnek dosya grubuna PRIMARY genişletilmiş bir özellik ekler.

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. Şemaya genişletilmiş özellik ekleme

Aşağıdaki örnek şemaya HumanResources genişletilmiş bir özellik ekler.

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. Tabloya genişletilmiş özellik ekleme

Aşağıdaki örnek şemadaki Address tabloya Person genişletilmiş bir özellik ekler.

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. Role genişletilmiş özellik ekleme

Aşağıdaki örnek bir uygulama rolü oluşturur ve role genişletilmiş bir özellik ekler. değerini güçlü bir parolayla değiştirin <password> .

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. Türe genişletilmiş özellik ekleme

Aşağıdaki örnek bir türe genişletilmiş özellik ekler.

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';

Ben. Kullanıcıya genişletilmiş özellik ekleme

Aşağıdaki örnek bir kullanıcı oluşturur ve kullanıcıya genişletilmiş bir özellik ekler.

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';