Работа с документооборотом, технология FileStream

Lesimel
Дата: 02.06.2011 00:27:21
Доброго время суток :)
Решила в своем курсовом использовать FileStream, у меня к вам вопросик, а как писать хранимые процедуры для загрузки файлов?

Код создания таблицы с полем varbinary(max):
CREATE TABLE ResultWork
(Ik_ResultWork [uniqueidentifier] ROWGUIDCOL 
CONSTRAINT ResultWorkPrimary PRIMARY KEY,
idUspevDocs INT NOT NULL,
Ik_ReqWork INT NOT NULL,
LoadDoc VARBINARY(MAX) FILESTREAM NOT NULL
CONSTRAINT ResultWorkReqWorkForeign FOREIGN KEY 
(Ik_ReqWork) REFERENCES ReqWork,
CONSTRAINT ResultWorkUspevKPThemeForeign FOREIGN KEY 
(idUspevDocs) REFERENCES UspevKPTheme);
Заранее огромное спасибо :)
Mnior
Дата: 02.06.2011 02:32:14
Управление данными FILESTREAM с помощью языка Transact-SQL
Данные FILESTREAM в SQL Server 2008 (ADO.NET)

Куча готовых примеров прямо в документации. Лучше бы взяли тему курсовика - использование документации, обучение на рабочем месте, современные тенденции леньтяйства работников и к чему это приведёт отрасль в будущем, отсутствие базовых умений и понятий и навыков обучения и поиска информации у современных выпускников и молодёжи в общем.
Lesimel
Дата: 02.06.2011 11:18:16
Mnior,
зачем же быть таким грубым?
Я прочитала эти статьи, там написано как создавать файл и добавление в него данных...
Мне надо реализовать в системе загрузку работ документов, скорее всего просто архивы...
Первый раз сталкиваюсь с FileStream, и не очень понимаю как с ним работать...
kDnZP
Дата: 02.06.2011 11:22:14
Lesimel, а вот так вы умеете? Не? Нужно учиться.
Mnior
Дата: 02.06.2011 11:27:00
Lesimel
зачем же быть таким грубым?
Констатация фактов это не грубость, а наоборот одолжение. Известно над чем работать.
Lesimel
Дата: 02.06.2011 12:32:47
обычную вставку я поняла, пример:
INSERT INTO ResultWork
SELECT newid(), 1,1, * FROM OPENROWSET(BULK N'C:\net_share.bmp', SINGLE_BLOB) AS LoadDoc

А с хранимой процедурой все равно не очень понятно:
CREATE PROC PResultWorkINSERT
@LoadDoc VARBINARY(max),
@Ik_ReqWork INT,
@idUspevDocs INT
AS
INSERT INTO ResultWork (Ik_ReqWork,idUspevDocs,LoadDoc)
VALUES ....
SamMan
Дата: 02.06.2011 13:24:37
Lesimel
А с хранимой процедурой все равно не очень понятно


Что именно Вам не очень понятно с ХП? Что было сделано? Какие результаты/ошибки имеете на руках? Все сюда!
Lesimel
Дата: 02.06.2011 13:41:14
SamMan
Lesimel
А с хранимой процедурой все равно не очень понятно


Что именно Вам не очень понятно с ХП? Что было сделано? Какие результаты/ошибки имеете на руках? Все сюда!



Мне сам синтаксис не очень понятен, я пишу примерно так, как в обычной вставке:
CREATE PROC PResultWorkINSERT
@LoadDoc VARBINARY(max),
@Ik_ReqWork INT,
@idUspevDocs INT
AS
INSERT INTO ResultWork (Ik_ReqWork,idUspevDocs,LoadDoc)
VALUES 
(SELECT 1,1,*
FROM OPENROWSET(BULK @LoadDoc, SINGLE_BLOB) AS LoadDoc)

Ошибка: Неправильный синтаксис около ключевого слова "SELECT"
Неправильный синтаксис около конструкции "@LoadDoc".
Гавриленко Сергей Алексеевич
Дата: 02.06.2011 13:42:46
Описание синтаксиса есть в хелпе.
Prolog
Дата: 02.06.2011 13:52:50
Lesimel
CREATE PROC PResultWorkINSERT
@LoadDoc VARBINARY(max),
@Ik_ReqWork INT,
@idUspevDocs INT
AS
INSERT INTO ResultWork (Ik_ReqWork,idUspevDocs,LoadDoc)
VALUES 
(SELECT 1,1,*
FROM OPENROWSET(BULK @LoadDoc, SINGLE_BLOB) AS LoadDoc)

Ошибка: Неправильный синтаксис около ключевого слова "SELECT"
Неправильный синтаксис около конструкции "@LoadDoc".


1. Параметр @LoadDoc. В нем передаётся сам документ или путь к файлу на диске?
2. Для чего параметры @Ik_ReqWork и @idUspevDocs? Они нигде не используются.
3. Либо VALUES, либо SELECT без в скобок.
4. OPENROWSET не допускает параметров. Если параметры всё же нужны, то используйте динамический SQL.