Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проблемы с sqlfilestream  [new]
r.alexander
Member

Откуда:
Сообщений: 8
CREATE TABLE [dbo].[PersonFinger](
	[PersonID] [int] NOT NULL,
	[FingerID] [int] NOT NULL,
	[GUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
	[Finger] [varbinary](max) FILESTREAM  NOT NULL,
 CONSTRAINT [PK_PersonFinger] PRIMARY KEY CLUSTERED 
(
	[PersonID] ASC,
	[FingerID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] FILESTREAM_ON [PHOTO],
 CONSTRAINT [UQ__PersonFi__15B69B8F289A6F1B] UNIQUE NONCLUSTERED 
(
	[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] FILESTREAM_ON [PHOTO]
GO
ALTER TABLE [dbo].[PersonFinger] ADD  CONSTRAINT [DF_PersonFinger_GUID]  DEFAULT (newid()) FOR [GUID]
GO
ALTER TABLE [dbo].[PersonFinger] ADD  CONSTRAINT [DF_PersonFinger_Finger]  DEFAULT (0x) FOR [Finger]
GO
create procedure AddPersonFinger
as

set nocount on

if not exists(select * from dbo.PersonFinger)
   insert into dbo.PersonFinger(PersonID, FingerID)
   values(1,1)
  

begin tran
select 
	Finger.PathName() as filepath, 
	GET_FILESTREAM_TRANSACTION_CONTEXT() as txContext
from dbo.PersonFinger 

commit tran



        private void SaveToDB1()
        {
            byte[] buffer = new byte[1]; //Картинко Finger
            string filePath = null;
            byte[] txContext = null;
            SqlCommand sqlCommand = new SqlCommand();
            SqlTransaction tran = null;            
            try
            {
                sqlCommand.CommandText = "dbo.AddPersonFinger";                
                sqlCommand.CommandType = CommandType.Text;
                sqlCommand.Connection = DBConnection;
                using (SqlDataReader reader = sqlCommand.ExecuteReader())
                {
                    reader.Read();
                    filePath = reader.GetSqlString(0).Value;
                    txContext = reader.GetSqlBinary(1).Value;
                    using (SqlFileStream fileStream = new SqlFileStream(filePath, txContext, FileAccess.ReadWrite))
                    {
                        fileStream.Write(buffer, 0, buffer.Length);
                        fileStream.Close();
                    }             
                }
            }
            catch (Exception ex)
            {                
                sqlCommand.Dispose();
                MessageBox.Show(ex.Message);
            }
  }


При открытии объекта
в этой строке using (SqlFileStream fileStream = new SqlFileStream(filePath, txContext, FileAccess.ReadWrite))
возникает ошибка "An invalid parameter was passed to the function."
MSDN Прочитал.

Знающие люди подскажите плиз в чем "шляпа".

Заранее спасибо за ответ.

Для чего все это нужно.
Сохранить темплейт скана пальца в DB.
Работаю с SDK BioLink.
Когда покупал SDK все вроде на сайте понравилось.
Дали SDK без нормального описания.
Описание от них 3 день жду.

Модератор: Пользуйтесь тегами src, чтобы ваши простыни кода можно хоть как-то было прочитать


Сообщение было отредактировано: 27 ноя 14, 13:36
27 ноя 14, 13:31    [16913309]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
r.alexander, вопрос-то по шарпу, а не сиквелу.
27 ноя 14, 13:54    [16913556]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
r.alexander
Member

Откуда:
Сообщений: 8
Разницы нет. это объекты доступа к данным.

Вопрос почему SQL не хочет сохранять бинарные данные.

Может проблемы с настройкой Сиквела или доступа к диску.

Установлен локально дополнительно 2012 SQL
27 ноя 14, 14:09    [16913688]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
http://www.codeproject.com/Articles/128657/How-Do-I-Use-SQL-File-Stream
27 ноя 14, 14:15    [16913731]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
http://blog.tallan.com/2011/08/22/using-sqlfilestream-with-c-to-access-sql-server-filestream-data/

готовое решение на C#
27 ноя 14, 14:17    [16913740]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
r.alexander
Member

Откуда:
Сообщений: 8
Уважаемые господа.

Я тоже могу пользоваться интернетом.

http://www.codeproject.com/ я знаю
http://blog.tallan.com/2011/08/22/using-sqlfilestream-with-c-to-access-sql-server-filestream-data/ прочитал.
msdn прочитал.

Если вы не сталкивались с такой проблемой то лучше не делать бесполезных сообщений.

Спасибо.
27 ноя 14, 14:21    [16913767]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
ну так вы проверили на чистом SQL записываются у вас данные в FILESTREAM на сервере или нет?
27 ноя 14, 14:26    [16913795]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
aleks2
Guest
r.alexander
Уважаемые господа.

Я тоже могу пользоваться интернетом.

http://www.codeproject.com/ я знаю
http://blog.tallan.com/2011/08/22/using-sqlfilestream-with-c-to-access-sql-server-filestream-data/ прочитал.
msdn прочитал.

Если вы не сталкивались с такой проблемой то лучше не делать бесполезных сообщений.

Спасибо.


Большинство здесь сталкивалось с такой проблемой.
Она носит название "говнокодер".
Суть ее сводится к попытке загребать жар чужими руками, вместо того, чтобы воспроизвести РАБОТАЮЩИЕ примеры из документации.

Вам же сказано: "An invalid parameter was passed to the function."
Вот и разбирайтесь.
Это сообщение НЕ MS SQL.
27 ноя 14, 14:26    [16913797]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
create procedure AddPersonFinger
as

set nocount on

if not exists(select * from dbo.PersonFinger)
   insert into dbo.PersonFinger(PersonID, FingerID)
   values(1,1)
  

begin tran
select 
	Finger.PathName() as filepath, 
	GET_FILESTREAM_TRANSACTION_CONTEXT() as txContext
from dbo.PersonFinger 

commit tran


вы лучше бы, чем огрызаться, на свою ХП помедитировали бы
27 ноя 14, 14:27    [16913809]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
r.alexander
msdn прочитал.
Хреново прочитали.
http://msdn.microsoft.com/ru-ru/library/system.data.sqltypes.sqlfilestream(v=vs.110).aspx
Потоковая передача данных FILESTREAM работает только в контексте транзакции SQL Server.
Транзакции-то у вас и нету.
27 ноя 14, 14:34    [16913846]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
r.alexander
Member

Откуда:
Сообщений: 8
 begin tran

это вообще не транзакция.


Ладно. все понятно.

Тема закрыта.
27 ноя 14, 14:56    [16914038]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
r.alexander
Разницы нет. это объекты доступа к данным.

Вопрос почему SQL не хочет сохранять бинарные данные.

Может проблемы с настройкой Сиквела или доступа к диску.

Установлен локально дополнительно 2012 SQL


Для Вас нет разницы, т.к. Вы не понимаете , что эта ошибка создана НЕ SQL сервером и возникает НЕ на сервере.
27 ноя 14, 17:28    [16915201]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
r.alexander
Member

Откуда:
Сообщений: 8
Я все понимаю не первый день.

На чистом компе с 2008 r2 все работает.

Скорее всего проблема в том что установлено несколько экземпляров SQL servero-в.

Пакетная выгрузка через bcp.exe не работала именно по такой причине, установленного еще одно экземпляра SQL Server-a.
Был установлен вместе с офисом или VS MS SQL Express.

Проблема решилась удалением папки "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\Resources\1049"
И неужели, bcp заработало.

Уважаемые господа не надо думать что только вы "гуру" а все остальные "говнокодеры".

Без обид.
27 ноя 14, 17:43    [16915306]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
r.alexander,

Если несколько экземпляров, то они называются именованными. Для обращения к ним нужно указывать имя сервера и имя экземпляра SQL сервера, а не удалять папку за папкой пока не заработает.
27 ноя 14, 17:55    [16915386]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
r.alexander
Member

Откуда:
Сообщений: 8
Wlr-l,

Дружище.

Удаление папки относится к пакетной выгрузке bcp.exe.

Лекарство не я придумал.

В 1049 лежит не корректный ресурс файл для bcp и поэтому он не запускается.

Я так понял подобный сообщения постятся что бы заработать себе рейтинг по сообщениям.

Читайте внимательно дружище, что пишется в сообщении и отвечайте корректно.
27 ноя 14, 18:23    [16915541]     Ответить | Цитировать Сообщить модератору
 Re: проблемы с sqlfilestream  [new]
Glory
Member

Откуда:
Сообщений: 104760
r.alexander
Читайте внимательно дружище, что пишется в сообщении и отвечайте корректно.

А вы расскажите, как утилита bcp и ее рескрснный файл связаны с вашим кодом на С ?
27 ноя 14, 21:47    [16916266]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить