Bagikan melalui


sp_addextendedproperty (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Menambahkan properti baru yang diperluas ke objek database.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

[ @name = ] N'name'

Nama properti yang akan ditambahkan. @name adalah sysname, tanpa default, dan tidak boleh NULL. Nama dapat menyertakan string karakter kosong atau non-alfanumerik, dan nilai biner.

[ @value = ] nilai

Nilai yang akan dikaitkan dengan properti . @value sql_variant, dengan default NULL. Ukuran @value tidak boleh lebih dari 7.500 byte.

[ @level0type = ] 'level0type'

Jenis objek tingkat 0. @level0type adalah varchar(128), dengan default NULL.

Input yang valid adalah:

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

Penting

Kemampuan untuk menentukan USER sebagai tipe level-0 dalam properti yang diperluas dari objek jenis level-1 akan dihapus dalam versi SQL Server di masa mendatang. Gunakan SCHEMA sebagai jenis level-0 sebagai gantinya. Misalnya, saat menentukan properti yang diperluas pada tabel, tentukan skema tabel alih-alih nama pengguna. Kemampuan untuk menentukan TYPE sebagai tipe level-0 akan dihapus dalam versi SQL Server yang akan datang. Untuk TYPE, gunakan SCHEMA sebagai jenis level-0 dan TYPE sebagai jenis level-1.

[ @level0name = ] N'level0name'

Nama tipe objek tingkat 0 yang ditentukan. @level0name adalah sysname, dengan default NULL.

[ @level1type = ] 'level1type'

Jenis objek tingkat 1. @level1type adalah varchar(128), dengan default NULL.

Input yang valid adalah:

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

[ @level1name = ] N'level1name'

Nama tipe objek tingkat 1 yang ditentukan. @level1name adalah sysname, dengan default NULL.

[ @level2type = ] 'level2type'

Jenis objek tingkat 2. @level2type adalah varchar(128), dengan default NULL.

Input yang valid adalah:

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

[ @level2name = ] N'level2name'

Nama tipe objek tingkat 2 yang ditentukan. @level2name adalah sysname, dengan default NULL.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

Saat Anda menentukan properti yang diperluas, objek dalam database SQL Server diklasifikasikan ke dalam tiga tingkat: 0, 1, dan 2. Tingkat 0 adalah tingkat tertinggi dan didefinisikan sebagai objek yang terkandung pada cakupan database. Objek tingkat 1 terkandung dalam skema atau cakupan pengguna, dan objek tingkat 2 dimuat oleh objek tingkat 1. Properti yang diperluas dapat ditentukan untuk objek di salah satu tingkat ini.

Referensi ke objek dalam satu tingkat harus memenuhi syarat dengan nama objek tingkat lebih tinggi yang memiliki atau berisinya. Misalnya, saat Anda menambahkan properti yang diperluas ke kolom tabel (tingkat 2), Anda juga harus menentukan nama tabel (tingkat 1) yang berisi kolom dan skema (tingkat 0) yang berisi tabel.

Jika semua jenis dan nama objek null, properti milik database saat ini itu sendiri.

Properti yang diperluas tidak diizinkan pada objek sistem, objek di luar lingkup database yang ditentukan pengguna, atau objek yang tidak tercantum dalam Argumen sebagai input yang valid.

Properti yang diperluas tidak diperbolehkan pada tabel yang dioptimalkan memori.

Mereplikasi properti yang diperluas

Properti yang diperluas hanya direplikasi dalam sinkronisasi awal antara Penerbit dan Pelanggan. Jika Anda menambahkan atau mengubah properti yang diperluas setelah sinkronisasi awal, perubahan tidak direplikasi. Untuk informasi selengkapnya tentang cara mereplikasi objek database, lihat Menerbitkan Data dan Objek Database.

Skema versus pengguna

Kami tidak menyarankan untuk menentukan USER sebagai jenis level-0 saat Anda menerapkan properti yang diperluas ke objek database, karena ini dapat menyebabkan ambiguitas resolusi nama. Misalnya, asumsikan pengguna Mary memiliki dua skema (Mary dan MySchema), dan skema ini keduanya berisi tabel bernama MyTable. Jika Mary menambahkan properti yang diperluas ke tabel MyTable dan menentukan @level0type = 'USER', @level0name = N'Mary', tidak jelas tabel mana properti yang diperluas diterapkan. Untuk mempertahankan kompatibilitas mundur, SQL Server menerapkan properti ke tabel yang terkandung dalam skema bernama Mary.

Izin

Anggota peran database tetap db_owner dan db_ddladmin dapat menambahkan properti yang diperluas ke objek apa pun dengan pengecualian berikut: db_ddladmin tidak dapat menambahkan properti ke database itu sendiri, atau ke pengguna atau peran.

Pengguna dapat menambahkan properti yang diperluas ke objek yang mereka miliki atau memiliki izin UBAH atau KONTROL.

Contoh

J. Menambahkan properti yang diperluas ke database

Contoh berikut menambahkan nama Caption properti dengan nilai AdventureWorks2022 Sample OLTP Database ke AdventureWorks2022 database sampel.

USE AdventureWorks2022;
GO

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

B. Menambahkan properti yang diperluas ke kolom dalam tabel

Contoh berikut menambahkan properti keterangan ke kolom PostalCode dalam tabel Address.

USE AdventureWorks2022;
GO

EXEC 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. Menambahkan properti masker input ke kolom

Contoh berikut menambahkan properti 99999 or 99999-9999 or #### ### masker input ke kolom PostalCode dalam tabel Address.

USE AdventureWorks2022;
GO

EXEC 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. Menambahkan properti yang diperluas ke grup file

Contoh berikut menambahkan properti yang diperluas ke PRIMARY grup file.

USE AdventureWorks2022;
GO

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

E. Menambahkan properti yang diperluas ke skema

Contoh berikut menambahkan properti yang diperluas ke HumanResources skema.

USE AdventureWorks2022;
GO

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

F. Menambahkan properti yang diperluas ke tabel

Contoh berikut menambahkan properti yang diperluas ke Address tabel dalam Person skema.

USE AdventureWorks2022;
GO

EXEC 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. Menambahkan properti yang diperluas ke peran

Contoh berikut membuat peran aplikasi dan menambahkan properti yang diperluas ke peran.

USE AdventureWorks2022;
GO

CREATE APPLICATION ROLE Buyers
    WITH Password = '987G^bv876sPY)Y5m23';
GO

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

H. Menambahkan properti yang diperluas ke jenis

Contoh berikut menambahkan properti yang diperluas ke jenis.

USE AdventureWorks2022;
GO

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

I. Menambahkan properti yang diperluas ke pengguna

Contoh berikut membuat pengguna dan menambahkan properti yang diperluas ke pengguna.

USE AdventureWorks2022;
GO

CREATE USER CustomApp WITHOUT LOGIN;
GO

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