Aracılığıyla paylaş


FileTable oluşturma, değiştirme veya bırakma

Şunlar için geçerlidir: SQL Server

Yeni bir FileTable'ın nasıl oluşturulacağını veya var olan bir FileTable'ı nasıl değiştirip bırakacağını açıklar.

Bir FileTable oluşturma

FileTable, önceden tanımlanmış ve sabit bir şeması olan özelleştirilmiş bir kullanıcı tablosudur. Bu şema FILESTREAM verilerini, dosya ve dizin bilgilerini ve dosya özniteliklerini depolar. FileTable şeması hakkında bilgi için bkz. FileTable Şeması.

Transact-SQL veya SQL Server Management Studio kullanarak yeni bir FileTable oluşturabilirsiniz. FileTable'ın sabit bir şeması olduğundan, sütun listesi belirtmeniz gerekmez. FileTable oluşturmak için basit söz dizimi şunları belirtmenize olanak tanır:

  • Dizin adı. FileTable klasör hiyerarşisinde, bu tablo düzeyindeki dizin, veritabanı düzeyinde belirtilen veritabanı dizininin alt öğesi ve tabloda depolanan dosyaların veya dizinlerin üst öğesi olur.

  • FileTable'daki Name sütunu için dosya adlarıyla kullanılacak harmanlama adı.

  • Otomatik olarak oluşturulan 3 birincil anahtar ve benzersiz kısıtlamalar için kullanılacak adlar.

Transact-SQL ile FileTable oluşturma

CREATE TABLE deyimini AS FILETABLE seçeneğiyle çağırarak bir DosyaTablosu oluşturun. FileTable'ın sabit bir şeması olduğundan, sütun listesi belirtmeniz gerekmez. Yeni FileTable için aşağıdaki ayarları belirtebilirsiniz:

  1. FILETABLE_DIRECTORY. FileTable'da depolanan tüm dosyalar ve dizinler için kök dizin işlevi görecek dizini belirtir. Bu ad, veritabanındaki tüm FileTable dizin adları arasında benzersiz olmalıdır. Geçerli harmanlama ayarlarından bağımsız olarak benzersizlik karşılaştırması büyük/küçük harfe duyarlı değildir.

    • Bu değer nvarchar(255) veri türüne sahiptir ve sabit harmanlama kullanır Latin1_General_CI_AS_KS_WS.

    • Sağladığınız dizin adı, geçerli bir dizin adı için dosya sisteminin gereksinimlerine uygun olmalıdır.

    • Bu ad, veritabanındaki tüm FileTable dizin adları arasında benzersiz olmalıdır. Geçerli harmanlama ayarlarından bağımsız olarak benzersizlik karşılaştırması büyük/küçük harfe duyarlı değildir.

    • FileTable'ı oluştururken bir dizin adı sağlamazsanız, dizin adı olarak FileTable'ın adı kullanılır.

  2. FILETABLE_COLLATE_FILENAME. FileTable'daki sütuna uygulanacak harmanlamanın Name adını belirtir.

    1. Belirtilen harmanlama, Windows dosya adlandırma semantiğine uymak için büyük/küçük harfe duyarlı olmamalıdır.

    2. için FILETABLE_COLLATE_FILENAMEbir değer sağlamazsanız veya belirtirseniz database_default, sütun geçerli veritabanının harmanlamasını devralır. Mevcut veritabanı sıralama düzeni büyük/küçük harfe duyarlıysa bir hata oluşur ve CREATE TABLE işlemi başarısız olur.

  3. Ayrıca, otomatik olarak oluşturulan 3 birincil anahtar ve benzersiz kısıtlamalar için kullanılacak adları da belirtebilirsiniz. Ad sağlamazsanız, sistem bu makalenin devamında açıklandığı gibi adlar oluşturur.

    • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
    • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
    • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME

Örnekler

Aşağıdaki örnek yeni bir FileTable oluşturur ve hem FILETABLE_DIRECTORYhem de FILETABLE_COLLATE_FILENAME için kullanıcı tanımlı değerleri belirtir.

CREATE TABLE DocumentStore AS FILETABLE
WITH (
    FILETABLE_DIRECTORY = 'DocumentTable',
    FILETABLE_COLLATE_FILENAME = database_default
);
GO

Aşağıdaki örnek ayrıca yeni bir FileTable oluşturur. Kullanıcı tanımlı değerler belirtilmediğinden FILETABLE_DIRECTORY değeri FileTable adı olur, değeri FILETABLE_COLLATE_FILENAME database_default olur ve birincil anahtar ve benzersiz kısıtlamalar sistem tarafından oluşturulan adları alır.

CREATE TABLE DocumentStore AS FILETABLE;
GO

SQL Server Management Studio ile FileTable oluşturma

Nesne Gezgini'nde, seçili veritabanının altındaki nesneleri genişletin, tablolar klasörüne sağ tıklayın ve Yeni FileTable'ı seçin.

Bu seçenek, bir FileTable oluşturmak için özelleştirebileceğiniz ve çalıştırabileceğiniz bir Transact-SQL betik şablonu içeren yeni bir betik penceresi açar. Betiği kolayca özelleştirmek için Sorgu menüsündeki Şablon Parametreleri için Değerleri Belirt seçeneğini kullanın.

FileTable oluşturmak için gereksinimler ve kısıtlamalar

  • Varolan bir tabloyu FileTable'a dönüştürmek için değiştiremezsiniz.

  • Daha önce veritabanı düzeyinde belirtilen üst dizinin null olmayan bir değeri olmalıdır. Veritabanı düzeyinde dizini belirtme hakkında bilgi için bkz. FileTable önkoşullarını etkinleştirme.

  • FileTable bir FILESTREAM sütunu içerdiğinden FileTable geçerli bir FILESTREAM dosya grubu gerektirir. İsteğe bağlı olarak, FileTable oluşturma komutunun CREATE TABLE bir parçası olarak geçerli bir FILESTREAM dosya grubu belirtebilirsiniz. Bir dosya grubu belirtmezseniz, FileTable veritabanı için varsayılan FILESTREAM dosya grubunu kullanır. Veritabanında FILESTREAM dosya grubu yoksa bir hata oluşur.

  • ...CREATE TABLE deyiminin AS FILETABLEbir parçası olarak tablo kısıtlaması oluşturamazsınız. Ancak kısıtlamayı daha sonra bir ALTER TABLE deyim kullanarak ekleyebilirsiniz.

  • tempdb veritabanında veya herhangi bir diğer sistem veritabanında FileTable oluşturamazsınız.

  • FileTable'i geçici tablo olarak oluşturamazsınız.

FileTable'da değişiklik

FileTable önceden tanımlanmış ve sabit bir şemaya sahip olduğundan, sütunlarını ekleyemez veya değiştiremezsiniz. Ancak, bir FileTable'a özel dizinler, tetikleyiciler, kısıtlamalar ve diğer seçenekler ekleyebilirsiniz.

Sistem tanımlı kısıtlamalar da dahil olmak üzere FileTable ad alanını etkinleştirmek veya devre dışı bırakmak için deyimini kullanma ALTER TABLE hakkında bilgi için bkz. FileTable'ları Yönetme.

Transact-SQL Kullanarak FileTable Dizinini Değiştirme

Şu deyimi çağırın: ALTER TABLE ve FILETABLE_DIRECTORY için SET seçeneğine geçerli bir yeni değer sağlayın.

Example

ALTER TABLE filetable_name SET (FILETABLE_DIRECTORY = N'directory_name');
GO

SQL Server Management Studio Kullanarak FileTable Dizinini Değiştirme

Nesne Gezgini'nde FileTable'a sağ tıklayın ve Özellikler'i seçerek Tablo Özellikleri iletişim kutusunu açın. FileTable sayfasında, FileTable dizin adı için yeni bir değer girin.

FileTable'ı değiştirmek için gereksinimler ve kısıtlamalar

  • değerini FILETABLE_COLLATE_FILENAMEdeğiştiremezsiniz.

  • FileTable'ın sistem tanımlı sütunlarını değiştiremez, bırakamaz veya devre dışı bırakamazsınız.

  • FileTable'a yeni kullanıcı sütunları, hesaplanan sütunlar veya kalıcı hesaplanan sütunlar ekleyemezsiniz.

DosyaTablosunu Silme

Normal söz dizimini kullanarak DROP TABLE deyimiyle bir FileTable'ı silerek kaldırabilirsiniz.

Bir FileTable'ı bıraktığınızda, aşağıdaki nesneler de bırakılır:

  • FileTable'ın tüm sütunları ve tabloyla ilişkili dizinler, kısıtlamalar ve tetikleyiciler gibi tüm nesneler de bırakılır.

  • FileTable dizini ve içerdiği alt dizinler, veritabanının FILESTREAM dosyasından ve dizin hiyerarşisinden kaybolur.

FileTable'ın DROP TABLE dosya ad alanında açık dosya tanıtıcıları varsa komut başarısız olur. Açık kolları kapatma hakkında bilgi için bkz. FileTable'ları Yönetme.

FileTable oluşturduğunuzda diğer veritabanı nesneleri oluşturulur

Yeni bir FileTable oluşturduğunuzda, bazı sistem tanımlı dizinler ve kısıtlamalar da oluşturulur. Bu nesneleri değiştiremez veya bırakamazsınız; bunlar yalnızca FileTable'ın kendisi bırakıldığında kaybolur. Bu nesnelerin listesini görmek için katalog görünümünü sys.filetable_system_defined_objects sorgula.

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

Yeni bir FileTable oluşturduğunuzda oluşturulan dizinler

Yeni bir FileTable oluşturduğunuzda, aşağıdaki sistem tanımlı dizinler de oluşturulur:

Kolonlar Dizin türü Clustered
[path_locator] ASC Birincil Anahtar Hayı
[parent_path_locator] ASC, [name] ASC Benzersiz Hayı
[stream_id] ASC Benzersiz Hayı

Yeni bir FileTable oluşturduğunuzda oluşturulan kısıtlamalar

Yeni bir FileTable oluşturduğunuzda, aşağıdaki sistem tanımlı kısıtlamalar da oluşturulur:

Constraints Uygulatır
Aşağıdaki sütunlarda varsayılan kısıtlamalar:

creation_time
is_archive
is_directory
is_hidden
is_offline
is_readonly
is_system
is_temporary
last_access_time
last_write_time
path_locator
stream_id
Sistem tanımlı varsayılan kısıtlamalar, belirtilen sütunlar için varsayılan değerleri zorunlu kılma.
Kısıtlamaları denetleme Sistem tanımlı denetim kısıtlamaları aşağıdaki gereksinimleri uygular:

Geçerli dosya adları.
Geçerli dosya öznitelikleri.
Üst nesne bir dizin olmalıdır.
Ad alanı hiyerarşisi, dosya işleme sırasında kilitlenir.

Sistem tanımlı kısıtlamalar için adlandırma kuralı

Daha önce açıklanan sistem tanımlı kısıtlamalar şu biçimde <constraintType>_<tablename>[_<columnname>]_<uniquifier> adlandırılır:

  • '<constraint_type> CK (denetim kısıtlaması), DF (varsayılan kısıtlama), FK (yabancı anahtar), PK (birincil anahtar) veya UQ (benzersiz kısıtlama).

  • <uniquifier> , adı benzersiz hale getirmek için sistem tarafından oluşturulan bir dizedir. Bu dize FileTable adını ve benzersiz bir tanımlayıcıyı içerebilir.