Több az adatok betöltését FILESTREAM, Microsoft SQL Server, infozony, kiadói „nyitott rendszer”

Adatok betöltését FILESTREAM
Ebben a cikkben röviden beszélni, hogyan tudjuk megszervezni import / export fájlt a rendszer területén FILESTREAM táblázatok SQL Server és fordítva.

3. módszer OpenSqlFilestream API.

Az első esély kivételével típus „System.ComponentModel.Win32Exception” történt System.Data.dll

A .NET Framework hiba történt a végrehajtás során a felhasználó által meghatározott rutin vagy aggregátum „FilestreamStuff”:

System.ComponentModel.Win32Exception: A kérés nem támogatott

at System.Data.SqlTypes.SqlFileStream.OpenSqlFileStream (String path, Byte [] transactionContext, fileaccess hozzáférést, FileOptions opciók, Int64 allocationSize)

at System.Data.SqlTypes.SqlFileStream..ctor (String path, Byte [] transactionContext, fileaccess hozzáférést, FileOptions opciók, Int64 allocationSize)

at System.Data.SqlTypes.SqlFileStream..ctor (String path, Byte [] transactionContext, fileaccess hozzáférés)

at UserDefinedProcedures.FilestreamStuff (SqlString tblname, SqlString fsFldName, SqlGuid ROWID, SqlString strToInsert, SqlInt64 startPos, SqlInt64 numExistingCharsToSubstitute)

Felhasználói művelet, ha van ilyen, akkor visszaszorítását.

Nem érintett sorok.

(0 sor (ok) vissza)

4. Eljárás kedvezőtlen.

Annak ellenére, hogy ez a módszer Szőttes szerény folyamodnak, én nem ajánlom, semmilyen körülmények között, mert ez a) használ dokumentált SQL Server képességek, amelyek nem támogatják a következő verzió, és b) úgy működik, hogy megkerülje az SQL Server működtetőt. Mivel az SQL Server nem tud semmit arról, hogy mi leszünk mögötte khimichit, akkor nem veszi figyelembe ezeket a változásokat, és tükrözik azokat a tranzakciós log vezethetnek megsértése tranzakciós integritás és adatvesztés. „Processzor fog futni az összes lábak, a zárt pályák a táblán, a karon keresztül a meghajtó nyílásba öntsünk forró fém.” Ez a módszer a tisztán tudományos célokra teljesség és az egész szervezet, de nem a gyakorlati alkalmazáshoz.

A faylstrimovskogo Blob van Elérési () módszer. Ahhoz, hogy ez a munka, faylstrim mind az SQL Server szinten és a fájlrendszer szintjén kell beállítani, hogy a 2. pozícióban (lásd a folytatása a bejegyzést „Bevezetés a faylstrim.”) Ez azt jelenti, meg kell tenni a két varjak, nem csak lehetővé teszi FILESTREAM a-SQL hozzáférés, hanem az Enable FILESTREAM fájl I / O streaming hozzáférést, az SQL Server Configuration Manager és a kommunikáció szigetek SQL Server. És nem tudod, mert ez a módszer semmi köze a fizikai elérési utat és fájlnevet, amely tartalmaz egy mezőt faylstrim ezt a bejegyzést a fájlrendszerben. Visszatér psevdoput összeállított

\\<Имя компьютера>\ MSSQLSERVER \ v1 \<Имя базы>\<Имя схемы>\<Имя таблицы>\<Имя файлстримовского поля>\<гуид записи из поля rowguidcol>.

válassza stream.PathName (Média)

válassza stream.PhysicalPathName () Média, ahol $ rowguid = '01588060-47FD-425B-997A-96375885395A'

Most minden marad, hogy nem - másolja a fájlt az érdeklődés. Az eljárások paraméterei azonosak a paraméterek ReadFileToBlobField, pred.post lásd „Import / Export blobovskih mezőket a fájlok - CLR” .. Van is egy funkció kód CheckObjectsValidity.

// exec ReadFileToFSBlobField 'Média', 'stream', '01588060-47FD-425B-997A-96375885395A', 'c: \ Temp \ Book1.csv'

public static void ReadFileToFSBlobField (SqlString tblname, SqlString colName, SqlGuid GUID SqlString filename)

ha return (CheckObjectsValidity (tblname, colName)!);

SqlConnection CNN = new SqlConnection ( "keretében connection = true"); cnn.Open ();

SqlCommand cmd = new SqlCommand ( "select" + colName.ToString () + ".PhysicalPathName hogy ()" + tblName.ToString () + "ahol $ rowguid = @guid", CNN);

cmd.Parameters.Add (új SqlParameter ( "@ guid" guid));

karaktersorozat blobFileName = (karakterlánc) cmd.ExecuteScalar ();

Vissza - az faylstrimovskogo fájlt egy ingyenes fájl.

// exec WriteFSBlobFieldToFile 'Média', 'stream', '01588060-47FD-425B-997A-96375885395A', 'c: \ Temp \ Book2.csv'

public static void WriteFSBlobFieldToFile (SqlString tblname, SqlString colName, SqlGuid GUID SqlString filename)

ha return (CheckObjectsValidity (tblname, colName)!);

SqlConnection CNN = new SqlConnection ( "keretében connection = true"); cnn.Open ();

SqlCommand cmd = new SqlCommand ( "select" + colName.ToString () + ".PhysicalPathName hogy ()" + tblName.ToString () + "ahol $ rowguid = @guid", CNN);

cmd.Parameters.Add (új SqlParameter ( "@ guid" guid));

karaktersorozat blobFileName = (karakterlánc) cmd.ExecuteScalar ();