Dizinler ve FileTables yolları ile çalışmak

Dosyaları FileTables saklanacağı dizin yapısını açıklar.

Bu Konuda

I want to...

  • Dizinler ve FileTables yolları ile çalışmak

  • Göreceli yollar için taşınabilir kodu kullanın

Daha fazla bilgi edinin

  • Önemli kısıtlamalar

    • İç içe geçme düzeyi

    • Tam yol adı uzunluğu

  • Bir FileTable içinde saklanan bir öğenin tam yol

  • Kök dizinler örneği, veritabanı ve FileTable düzeyleri semantiği

  • İs_directory sütun FileTable şema

  • Sanal ağ adları (VNNs) AlwaysOn kullanılabilirlik grupları ile kullanma

Nasıl yapılır: dizinler ve FileTables yollarında çalışmak

FileTable dizinler çalışmak için aşağıdaki 3 işlevleri kullanabilirsiniz Transact-SQL:

Bu sonucu almak için

Bu işlevi kullanma

Kök düzeyindeki unc yolu veya geçerli veritabanı için belirli bir FileTable olsun.

FileTableRootPath (Transact-sql)

Bir dosya veya dizin içinde bir FileTable için mutlak veya göreceli bir unc yol almak.

GetFileNamespacePath (Transact-sql)

Yol Bulucu Kımlığı değerini belirtilen dosya ya da dizin içinde bir FileTable yanında-mek şartıyla yol alın.

GetPathLocator (Transact-sql)

[YUKARI]

Nasıl yapılır: taşınabilir kod için göreli yolları kullanma

Kod ve uygulama geçerli bilgisayar ve veritabanı bağımsız tutmak için mutlak dosya yolları kullanan kod yazma kaçının. Bunun yerine, tam yolu bir dosya için zamanında kullanarak elde FileTableRootPath (Transact-sql)ve GetFileNamespacePath (Transact-sql)) birlikte, aşağıdaki örnekte gösterildiği gibi işlev. Varsayılan olarak, GetFileNamespacePathişlevi göreli yolu veritabanı dosyasının kök yolunda.

USE database_name;
DECLARE @root nvarchar(100);
DECLARE @fullpath nvarchar(1000);

SELECT @root = FileTableRootPath();
SELECT @fullpath = @root + file_stream.GetFileNamespacePath()
    FROM filetable_name
    WHERE name = N'document_name';

PRINT @fullpath;
GO

[YUKARI]

Önemli kısıtlamalar

İç içe geçme düzeyi

Önemli notÖnemli

15'den fazla alt düzeylerinin FileTable dizinde depolayamaz. Sonra 15 alt düzeylerinin depoladığınızda, çünkü bu dosyalar ek bir düzeyi temsil edeceğini en alt düzeye dosyalarını içeremez.

Tam yol adı uzunluğu

Önemli notÖnemli

ntfs dosya sistemi, Windows kabuğu ve çoğu Windows API'leri 260 karakter sınırı çok uzun yol adlarını destekler. Bu nedenle tam yol adı 260 karakterden uzun olduğundan görüntülemek ya da Windows Explorer veya diğer birçok Windows uygulamalarını açma Transact-sql kullanarak bir FileTable dosya hiyerarşi içinde dosya oluşturmak mümkündür. Ancak bu dosyalar Transact-sql kullanarak erişmeye devam edebilirsiniz.

Bir FileTable içinde saklanan bir öğenin tam yol

Bir dosya ya da dizin içinde bir FileTable depolanan tam yolunu aşağıdaki öğelerle başlar:

  1. FILESTREAM dosya g/Ç erişim etkin pay SQL Serverörnek düzeyi.

  2. DIRECTORY_NAME belirtilen veritabanı düzeyinde.

  3. FILETABLE_DIRECTORY FileTable düzeyinde.

Elde edilen hiyerarşi şuna benzer:

\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\

Bu dizin sıradüzenindeki FileTable'nın dosyası ad alanı kökünde oluşturur. Bu dizin hiyerarşisi altında FileTable için FILESTREAM veri dosyaları ve alt dizinlerindeki dosyaları ve alt dizinleri de içerebilen olarak depolanır.

Örnek düzeyi FILESTREAM payı altında oluşturulan dizin hiyerarşisinde bir sanal dizin sıradüzeni olduğunu akılda tutmak önemlidir. Bu hiyerarşi depolanır SQL Serververitabanı ve ntfs dosya sistemi fiziksel olarak temsil değil. Dosya ve dizinleri FILESTREAM paylaşım ve içerdiği FileTables tüm işlemler el konulan ve tarafından bir SQL Serverbileşen gömülü dosya sistemi.

[YUKARI]

Kök dizinler örneği, veritabanı ve FileTable düzeyleri semantiği

Bu dizin sıradüzenindeki aşağıdaki semantiği gözlemler:

  • Örnek düzeyi FILESTREAM paylaşım yönetici tarafından yapılandırılan ve sunucu özelliği olarak depolanır. Sen-ebilmek rename bu paylaşımı kullanarak SQL ServerYapılandırma Yöneticisi. Yeniden adlandırma işlemini sunucu yeniden başlatılıncaya kadar etkili olmaz.

  • Veritabanı düzeyinde DIRECTORY_NAME yeni bir veritabanı oluşturduğunuzda varsayılan olarak null olur. Yönetici ayarlayabilir veya bu adı kullanarak değiştirmek alter database deyimi. Adı (büyük küçük harf duyarlı karşılaştırma içinde) benzersiz olması gerekir Bu durumda.

  • Genellikle size FILETABLE_DIRECTORY adının bir parçası olarak create table bir FileTable oluşturduğunuzda deyim. Sen-ebilmek değişmek bu adı kullanarak alter table komut.

  • Bu kök dizinlere dosya g/Ç işlemlerini yeniden adlandıramazsınız.

  • Bu kök dizinler, özel dosya açılamıyor.

[YUKARI]

İs_directory sütun FileTable şema

Aşağıdaki tablo arasındaki etkileşim açıklar is_directory sütun ve file_stream bir FileTable FILESTREAM veri içeren bir sütun.

is_directory değer

file_stream değer

Davranış

FALSE

NULL

Bu sistem tanımlı bir kısıtlama tarafından yakalanmış olması, geçersiz bir kombinasyonudur.

FALSE

<değer>

Madde bir dosyayı temsil eder.

GERÇEK

NULL

Öğe dizini temsil eder.

GERÇEK

<değer>

Bu sistem tanımlı bir kısıtlama tarafından yakalanmış olması, geçersiz bir kombinasyonudur.

[YUKARI]

Sanal ağ adları (VNNs) AlwaysOn kullanılabilirlik grupları ile kullanma

Ne zaman FILESTREAM veya FileTable veri içeren veritabanını bir AlwaysOn kullanılabilirlik grubuna ait:

[YUKARI]

Ayrıca bkz.

Kavramlar

Önkoşullar için etkinleştir FileTable

Create, Alter ve FileTables bırak

Transact-SQL erişim FileTables

Dosya I\O API'leri erişim FileTables