2010-02-04 4 views
4

У меня есть база данных SQL Server 2008, использующая Filestreaming, и все работает отлично и денди отдельно от одного очень странного обстоятельства. Если у меня есть моя база данных, скажем, ноутбук, на локально установленной версии SQL Server 2008, и я подключен к сети, все работает нормально. Если я отключу сетевой кабель, через некоторое время класс SqlFileStream не будет инициализирован с помощью исключения Win32 (все остальное о подключении к базе данных отлично работает). Если я начну новый без сетевого кабеля, он не будет работать с той же ошибкой. Если я подключаю сетевой кабель даже без подключения к сети, он работает ... вытащить его, ничего.Ошибка SQL Server 2008 Filestream Win32 без сетевого кабеля!

Я подключение к FileStream в обычном методе документированной

SqlFileStream fileStream = new SqlFileStream(path, 
              context, 
              FileAccess.ReadWrite, 
              FileOptions.SequentialScan, 
              0); 

адресность пути и контекст из хранимой процедуры, которая генерирует их в следующем

SELECT Data.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() 
    FROM dbo.DocumentFiles 
WHERE [File_ID] = @FileId 

Я получаю следующая ошибка при создании экземпляра SqlFileStream

Win32Exception произошло Сеть невозможно. Для получения более информация о сети устранение неполадок, см. Справку по Windows.

Внутреннее исключение.

Я пробовал так много вещей, чтобы решить проблему без везения. никто в google-land, похоже, не имеет такой же проблемы, поэтому очевидно что-то глупое, что я делаю. Если кто-нибудь может пролить свет на это, я был бы очень благодарен.

James

+0

Вы пытались изменить сервер при подключении к "." –

+0

Да, я пробовал много разных комбинаций строки подключения. Различные сетевые библиотеки, типы пользователей, надежные соединения, имена серверов и экземпляры ..., похоже, больше связаны с разрешением. – James

ответ

0

Хм. Похоже, ваш сетевой интерфейс отключается, когда вы отсоединяете кабель. Когда это происходит, стек TCP/IP также падает, так как больше нет доступных интерфейсов. Я предлагаю вам установить адаптер Loopback MS, этот article объясняет, как это сделать в Windows XP; о том, как это сделать в других операционных системах, легко. Не забудьте присвоить ему статический IP-адрес после его установки, достаточно частного адреса, такого как 192.168.1.x. Поскольку адаптер loopback является виртуальным, он постоянно находится в состоянии «Up», даже когда вы отключите кабель, и это предотвращает закрытие стека TCP в Windows.

+0

Будет ли это так, если я использую именованные каналы в качестве сетевой библиотеки? – James

+0

Я следовал инструкциям (я возвращал обратный адрес цикла, когда я пинговал сам), и теперь все работает. Большое спасибо за предложение этого предложения. Меня это действительно беспокоило! Кажется, это немного короткое появление в методе фильтрации в 2008 году? – James

+1

Нет, я не думаю, что это недостаток в методе FileStream, похоже, что вы используете TCP/IP для подключения к SQL-серверу, а когда TCP/IP отключается, соединение перестает работать. Неудивительно, что SqlFileStream не может получить какие-либо данные, следовательно, исключение. Я полагаю, что если вы начнете использовать разделяемую память или именованные каналы в качестве транспорта, вам больше не понадобится адаптер loop loopback, но, конечно же, вы сможете подключиться к локальному экземпляру SQL-сервера. –

Смежные вопросы