Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dosyaları FileTable'lara yüklemeyi veya geçirmeyi açıklar.
Dosyaları FileTable'a yükleme veya geçirme
Dosyaları bir FileTable'a yüklemek veya geçirmek için seçtiğiniz yöntem, dosyaların şu anda nerede depolandığına bağlıdır.
| Dosyaların geçerli konumu | Geçiş seçenekleri |
|---|---|
| Dosyalar şu anda dosya sisteminde depolanır. SQL Server dosyalar hakkında bilgi sahibi değildir. |
FileTable, Windows dosya sisteminde klasör olarak göründüğünden, dosyaları taşımak veya kopyalamak için kullanılabilir yöntemlerden herhangi birini kullanarak dosyaları kolayca yeni bir FileTable'a yükleyebilirsiniz. Bu yöntemler arasında Windows Gezgini, xcopy ve robocopy gibi komut satırı seçenekleri ve özel betikler veya uygulamalar bulunur. Mevcut bir klasörü FileTable'a dönüştüremezsiniz. |
| Dosyalar şu anda dosya sisteminde depolanır. SQL Server, dosyaların işaretçilerini içeren bir meta veri tablosu içerir. |
İlk adım, yukarıda belirtilen yöntemlerden birini kullanarak dosyaları taşımak veya kopyalamaktır. İkinci adım, mevcut meta veri tablosunu dosyaların yeni konumuna işaret eden şekilde güncelleştirmektir. Daha fazla bilgi için bu makalenin Örnek: Dosya sisteminden FileTable'a dosya geçirme bölümüne bakın. |
Nasıl yapılır: Dosyaları FileTable'a yükleme
Dosyaları bir FileTable'a yüklemek için aşağıdaki yöntemleri kullanabilirsiniz:
Dosyaları kaynak klasörlerden Windows Gezgini'ndeki yeni FileTable klasörüne sürükleyip bırakın.
Komut isteminden ya da bir toplu iş dosyasında veya komut dosyasında
move,copy,xcopyya darobocopygibi komut satırı seçeneklerini kullanın.Dosyaları C# veya Visual Basic .NET taşımak veya kopyalamak için özel bir uygulama yazın.
System.IOad uzayındaki yöntemleri çağırın.
Örnek: Dosyaları dosya sisteminden FileTable'a geçirme
Bu senaryoda, dosyalarınız dosya sisteminde depolanır ve SQL Server'da dosyalara yönelik işaretçiler içeren bir meta veri tablonuz vardır. Dosyaları bir FileTable içine taşımak ve ardından meta verilerinde yer alan her dosya için orijinal UNC yolunu FileTable UNC yolu ile değiştirmek istiyorsunuz. GetPathLocator işlevi bu hedefe ulaşmanıza yardımcı olur.
Bu örnekte, fotoğraflar hakkındaki verileri içeren bir veritabanı tablosu PhotoMetadataolduğunu varsayalım. Bu tabloda, dosyanın gerçek UNC yolunu içeren UNCPath türünde bir sütun .jpg vardır.
Görüntü dosyalarını dosya sisteminden FileTable'a geçirmek için aşağıdaki işlemi yapmanız gerekir:
Dosyaları tutmak için yeni bir FileTable oluşturun. Bu örnekte tablo adı kullanılır,
dbo.PhotoTableancak tabloyu oluşturmak için kullanılan kod gösterilmez.Dosyaları dizin yapısıyla FileTable'ın kök dizinine kopyalamak için
.jpgveya benzer bir araç kullanın.Aşağıdaki örneğe benzer bir kod kullanarak tablodaki
PhotoMetadatameta verileri düzeltin:
-- Add a path locator column to the PhotoMetadata table.
ALTER TABLE PhotoMetadata ADD pathlocator HIERARCHYID;
-- Get the root path of the Photo directory on the File Server.
DECLARE @UNCPathRoot VARCHAR(100) = '\\RemoteShare\Photographs';
-- Get the root path of the FileTable.
DECLARE @FileTableRoot VARCHAR(1000);
SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
-- Update the PhotoMetadata table.
-- Replace the File Server UNC path with the FileTable path.
UPDATE PhotoMetadata
SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
-- Update the pathlocator column to contain the pathlocator IDs from the FileTable.
UPDATE PhotoMetadata
SET pathlocator = GetPathLocator(UNCPath);
Dosyaları FileTable'a toplu yükleme
FileTable, toplu işlemler için normal bir tablo gibi davranır. FileTable, dosya ve dizin ad alanının bütünlüğünün korunmasını sağlayan sistem tanımlı kısıtlamalara sahiptir. Bu kısıtlamaların FileTable'a yüklenen veri toplu verilerinde doğrulanması gerekir. Bazı toplu ekleme işlemleri tablo kısıtlamalarının göz ardı edilmesine izin verdiğinden, aşağıdaki gereksinimler zorunlu tutulur.
Kısıtlamaları zorlayan toplu yükleme işlemleri, diğer tüm tablolarda olduğu gibi bir FileTable üzerinde çalıştırılabilir. Bu kategori aşağıdaki işlemleri içerir:
-
bcp ile
CHECK_CONSTRAINTSyan tümcesi. -
BULK INSERTileCHECK_CONSTRAINTSyan tümcesi. -
INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...),IGNORE_CONSTRAINTSyan cümlesi olmadan.
-
bcp ile
FileTable sistem tanımlı kısıtlamalar devre dışı bırakılmadığı sürece kısıtlamaları zorlamayan toplu yükleme işlemleri başarısız olur. Bu kategori aşağıdaki işlemleri içerir:
- yan tümce içermeyen bcp
CHECK_CONSTRAINTS -
BULK INSERT,CHECK_CONSTRAINTSyan tümcesi olmadan. -
INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)ileIGNORE_CONSTRAINTSyan tümcesi.
- yan tümce içermeyen bcp
Nasıl yapılır: Dosyaları FileTable'a toplu yükleme
Dosyaları bir FileTable'a toplu yüklemek için çeşitli yöntemler kullanabilirsiniz:
CHECK_CONSTRAINTS yan tümcesiyle çağırın.
FileTable ad alanını devre dışı bırakın ve CHECK_CONSTRAINTS ifadesi olmadan çağırın. Ardından FileTable ad alanını yeniden etkinleştirin.
FileTable kısıtlamalarını devre dışı bırakma hakkında bilgi için bkz. FileTable'ları Yönetme.
Nasıl Yapılır: Toplu yükleme için FileTable kısıtlamalarını devre dışı bırakma
Sistem tanımlı kısıtlamaları uygulama yükü olmadan dosyaları bir FileTable'a toplu yüklemek için kısıtlamaları geçici olarak devre dışı bırakabilirsiniz. Daha fazla bilgi için bkz. FileTable'ları Yönetme.