sp_addextendedproperty (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Menambahkan properti baru yang diperluas ke objek database.
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';