Столбец Filestream в предложении WHERE блокирует сервер - PullRequest
1 голос
/ 15 февраля 2012

Я реализовал файловый поток в существующей базе данных на SQL Server 2008 r2.

Теперь у меня очень острая проблема, так как мой сайт практически не работает:

С очень простой таблицей, такой как:

CREATE TABLE [dbo].[Table1](
    [Id] [int] IDENTITY(1,1),
    [rowguid] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [Image] [varbinary](max) FILESTREAM NULL,
 CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
 CONSTRAINT [Table1RowguidUnique] UNIQUE NONCLUSTERED 
(
    [rowguid] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[Table1] ADD  CONSTRAINT [DF_table1_rowguid]  DEFAULT (newid()) FOR [rowguid]
GO
ALTER TABLE dbo.Table1
SET ( FILESTREAM_ON = fsfg_LiveWebsite )
GO

Если я бегу:

select * from Table1 where Id = 1

он работает очень быстро и дает правильный результат. Если я запускаю что-либо с полем «Varbinary (max) FILESTREAM» в предложении where, вся таблица блокируется. Например, любой из этих 2 запросов:

select Id from Table1 where Id = 1 and [Image] is null
select Id from Table1 where Id = 1 and [Image] = convert(varbinary(max), 'a')

Что бы это могло быть?

Пожалуйста, ответьте как можно скорее с любым предложением!

Спасибо

1 Ответ

0 голосов
/ 15 февраля 2012

Прежде всего, если вы хотите запросить столбец VARBINARY, вам нужно включить и использовать полнотекстовый поиск.

Справочные статьи.

...