37-Mavzu: Sql yordamida Jadvallar yaratish, o‘chirish, o‘zgartirish Reja: 1. Transact-SQL yordamida FileTable yaratish 2. SQLNusxalash 3. FileTable Transact-SQL yordamida FileTable yaratish AS FileTable opsiyasi bilan CREATE TABLE (Transact-SQL)
iborasini chaqirish orqali FileTable obyektini yarating . FileTable qat'iy sxemaga ega bo'lganligi sababli, ustunlar ro'yxatini ko'rsatishga hojat yo'q. Yangi FileTable uchun quyidagi variantlarni belgilashingiz mumkin:
FILETABLE_DIRECTORY . Fayl jadvalida saqlangan barcha fayllar va kataloglar uchun asosiy katalog vazifasini bajaradigan katalogni belgilaydi. Bu nom ma'lumotlar bazasidagi barcha FileTable katalog nomlari orasida yagona bo'lishi kerak. Yagonalikni tekshirish joriy solishtirishdan qat'i nazar, katta-kichik harflarni sezmagan holda amalga oshiriladi.
Bu qiymat nvarchar(255) maʼlumotlar turiga ega va qatʼiy Latin1_General_CI_AS_KS_WS dan foydalanadi .
Siz ko'rsatgan katalog nomi fayl tizimining joriy katalog nomlari uchun talablariga javob berishi kerak.
Bu nom ma'lumotlar bazasidagi barcha FileTable katalog nomlari orasida yagona bo'lishi kerak. Yagonalikni tekshirish joriy solishtirishdan qat'i nazar, katta-kichik harflarni sezmagan holda amalga oshiriladi.
Agar FileTable yaratilganda katalog nomi ko'rsatilmagan bo'lsa, u holda katalog nomi sifatida FileTable nomidan foydalaniladi.
FILETABLE_COLLATE_FILENAME . Fayllar jadvalidagi Ism ustuniga qo'llaniladigan solishtirma nomini belgilaydi.
Belgilangan harmanlamalar Windows fayl nomi semantikasiga mos kelishi uchun katta -kichik harflarga sezgir bo'lmasligi kerak.
Agar FILETABLE_COLLATE_FILENAME bo'sh qoldirilgan bo'lsa yoki database_default ga o'rnatilgan bo'lsa , ustun joriy ma'lumotlar bazasini taqqoslashni meros qilib oladi. Agar joriy ma'lumotlar bazasida katta-kichik harflar bilan taqqoslash ishlatilsa, CREATE TABLE operatsiyasi bajarilmaydi.
Shuningdek, siz uchta asosiy kalitda ishlatiladigan nomlarni va avtomatik ravishda yaratilgan noyob cheklovlarni belgilashingiz mumkin. Agar nomlar ko'rsatilmagan bo'lsa, tizim ushbu bo'limda keyinroq tavsiflanganidek nomlarni yaratadi.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Misollar
Quyidagi misol FILETABLE_DIRECTORY va FILETABLE_COLLATE_FILENAME uchun foydalanuvchi tomonidan belgilangan qiymatlarga ega yangi Fayl jadvalini yaratadi .
SQLNusxalash
CREATE TABLE DocumentStore AS FileTable
WITH (
FileTable_Directory = 'DocumentTable',
FileTable_Collate_Filename = database_default
);
GO
Quyidagi misol ham yangi FileTable yaratadi. Foydalanuvchi tomonidan belgilangan qiymatlar oʻrnatilmagan, shuning uchun FILETABLE_DIRECTORY qiymati FileTable nomiga, FILETABLE_COLLATE_FILENAME qiymati database_defaultga aylanadi va asosiy kalit va noyob cheklovlar tizim tomonidan yaratilgan qiymatlarga oʻrnatiladi.
SQLNusxalash
CREATE TABLE DocumentStore AS FileTable;
GO
SQL Server Management Studio'da fayl jadvalini yaratish Object Explorer-da tanlangan ma'lumotlar bazasidagi ob'ektlarni kengaytiring, so'ng Jadvallar
jildini o'ng tugmasini bosing va Yangi fayl jadvali ni tanlang .
Ushbu parametr FileTable yaratish uchun moslashtirilishi va bajarilishi mumkin bo'lgan Transact-SQL skript shablonini o'z ichiga olgan yangi skript oynasini ochadi. Skriptni osongina sozlash uchun So'rovlar menyusidagi Shablon parametrlari uchun qiymatlarni belgilash opsiyasidan foydalaning .
Fayl jadvalini yaratish uchun talablar va cheklovlar
Mavjud jadvalni FileTablega aylantirish orqali o'zgartirib bo'lmaydi.
Ilgari ma'lumotlar bazasi darajasida ko'rsatilgan asosiy katalog null bo'lmasligi kerak. Ma'lumotlar bazasi darajasida kataloglarni belgilash haqida ma'lumot olish uchun Fayl jadvali uchun zarur shartlarni yoqish -ga qarang .
FileTable FILESTREAM ustunini o'z ichiga olganligi sababli, to'g'ri FILESTREAM fayl guruhi talab qilinadi. Ixtiyoriy ravishda, siz FileTable yaratish uchun CREATE TABLE buyrug'ida to'g'ri FILESTREAM fayl guruhini belgilashingiz mumkin . Agar biror fayl guruhi ko'rsatilmagan bo'lsa, FileTable jadvali ma'lumotlar bazasi uchun standart FILESTREAM fayl guruhidan foydalanadi. Agar ma'lumotlar bazasida FILESTREAM fayl guruhi bo'lmasa, xatolik yuz beradi.
CREATE TABLE...AS FILETABLE iborasining bir qismi sifatida jadval cheklovini yaratib bo'lmaydi . Biroq, cheklovni keyinroq ALTER TABLE iborasidan foydalanib qo'shishingiz mumkin .
Tempdb yoki boshqa tizim ma'lumotlar bazasida FileTable yaratish mumkin emas .
Fayl jadvalini vaqtinchalik jadval sifatida yaratish mumkin emas.
Fayl jadvalini o'zgartirish
FileTable oldindan belgilangan va qat'iy sxemaga ega bo'lgani uchun siz unga ustunlarni qo'sha olmaysiz yoki o'zgartira olmaysiz. Biroq, siz FileTablega maxsus indekslar, triggerlar, cheklovlar va boshqa variantlarni qo'shishingiz mumkin.
FileTable nom maydonini, shu jumladan tizim cheklovlarini yoqish yoki o'chirish uchun ALTER TABLE iborasidan foydalanish haqida ma'lumot olish uchun Fayl jadvali ob'ektlarini boshqarish bo'limiga qarang .
FileTable jadvali uchun katalogni qanday o'zgartirish mumkin
Transact-SQL yordamida FileTable katalogini o'zgartirish ALTER TABLE iborasini chaqiring va FILETABLE_DIRECTORY SET parametri
uchun yangi haqiqiy qiymatni o'rnating .
Misol
SQLNusxalash
ALTER TABLE filetable_name
SET ( FILETABLE_DIRECTORY = N'directory_name' );
GO
SQL Server Management Studio yordamida FileTable katalogini o'zgartirish
Object Explorer-da FileTable-ni o'ng tugmasini bosing va Jadval xususiyatlari dialog oynasini ochish uchun Xususiyatlar -ni tanlang . FileTable sahifasida FileTable Directory Name xususiyati uchun yangi qiymat kiriting .
FileTableni o'zgartirish uchun talablar va cheklovlar
FILETABLE_COLLATE_FILENAME qiymatini o‘zgartira olmaysiz .
Fayl jadvalidagi tizim ustunlarini o'zgartira olmaysiz, o'chira olmaysiz yoki o'chira olmaysiz.
Fayl jadvaliga yangi maxsus ustunlar, hisoblangan ustunlar yoki moddiylashtirilgan hisoblangan ustunlarni qo'sha olmaysiz.
Fayl jadvalini o'chirish
Oddiy DROP TABLE (Transact-SQL) bayonot sintaksisidan foydalanib, FileTableni o'chirib tashlashingiz mumkin .
Fayl jadvalini o'chirish quyidagi ob'ektlarni ham o'chiradi:
Indekslar, cheklovlar va triggerlar kabi jadval bilan bog'langan barcha ustunlar va ob'ektlar ham o'chiriladi.
FileTable jadval katalogi va pastki kataloglari FILESTREAM faylidan va ma'lumotlar bazasi katalogi ierarxiyasidan o'chiriladi.
DROP TABLE buyrug'i FileTable fayl nomlari maydonida ochiq fayl identifikatorlari mavjud bo'lsa bajarilmaydi. Ochiq tutqichlarni yopish haqida ma'lumot olish uchun Fayl jadvali ob'ektlarini boshqarish -ga qarang .
FileTable yaratilganda yaratilgan boshqa ma'lumotlar bazasi ob'ektlari
Yangi FileTable yaratilganda, ba'zi tizim indekslari va cheklovlari ham yaratiladi. Ushbu ob'ektlarni o'zgartirish yoki o'chirish mumkin emas, ular faqat Fayl jadvalining o'zi o'chirilganda yo'qoladi. Ushbu ob'ektlar ro'yxatini ko'rish uchun sys.filetable_system_defined_objects (Transact-SQL) katalog ko'rinishini so'rang .
SQLNusxalash
--View all objects for all filetables, unsorted
SELECT * FROM sys.filetable_system_defined_objects;
GO
--View sorted list with friendly names
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object'
FROM sys.filetable_system_defined_objects
ORDER BY FileTable, 'System-defined Object';
GO
Yangi FileTable yaratilganda yaratiladigan indekslar
Yangi FileTable yaratilganda quyidagi tizim indekslari ham yaratiladi.
ustunlar
Indeks turi
[path_locator]ASC
Birlamchi kalit, klasterlanmagan
[ota-ona_yo'l_locator]ASC,
[ism]ASC
Noyob, klasterlanmagan
[stream_id] ASC
Noyob, klasterlanmagan
Yangi FileTable yaratilganda yaratiladigan cheklovlar
Yangi FileTable yaratilganda quyidagi tizim cheklovlari ham yaratiladi.
oxirgi_yozish_vaqti yo'l joylashtiruvchi oqim_identifikatori
Tizim standart chegaralari belgilangan ustunlar uchun standart qiymatlardan foydalanadi.
Cheklovlarni tekshiring
Tizimni tekshirish cheklovlari quyidagi talablarni ta'minlaydi.
Yaroqli fayl nomlari.
Yaroqli fayl atributlari.
Asosiy ob'ekt katalog bo'lishi kerak.
Faylga ishlov berishda nomlar maydoni ierarxiyasi bloklanadi.
Tizim cheklovlari uchun nomlash konventsiyasi
Yuqorida tavsiflangan tizim cheklovlari _[_]_ formatida nomlanishi kerak , bunda:
CK (cheklash cheklovi), DF (standart cheklov), FK (chet el kaliti), PK (asosiy kalit) yoki UQ (noyob cheklash) bo'lishi mumkin.
- cheklovni yagona identifikatsiya qiluvchi tizim tomonidan yaratilgan qator. Ushbu qatorda FileTable nomi va noyob identifikator bo'lishi mumkin.