Как создать копию файла, имеющего длину больше чем 260 символов

Вы можете удалить столбец, изменить функцию и добавить столбец обратно:

ALTER TABLE [dbo].[TestTable]
    DROP COLUMN [Test];

GO

ALTER FUNCTION [dbo].[MyFunctionTest]
(
    @foo int
)
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
    RETURN @foo * 2
END
GO

ALTER TABLE [dbo].[TestTable]
    ADD [Test] AS ([dbo].[MyFunctionTest]([Foo])) PERSISTED

Создание новой функции также будет означать, что вам нужно удалить столбец и добавить его обратно, так как вычислено столбцы не могут быть изменены .

6
задан BIBD 17 February 2009 в 22:06
поделиться

5 ответов

Вы сталкиваетесь с ограничением MAX_PATH. Поскольку работа вокруг Вас должна смочь к P/Invoke непосредственно к CopyFile kernel32.dll, функционируют и используют "\\? \" Префикс перед целевым путем для предотвращения удара проблемы MAX_PATH.

Обратите внимание, что, в то время как Вы можете скопировать файл в пути, большинство приложений не сможет открыть его, так как они также ограничены MAX_PATH.

Хороший обзор проблемы может быть найден здесь: http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx

Некоторый пример кода P/Invoking в эти методы с помощью C# может быть найден в части 2, здесь: http://blogs.msdn.com/bclteam/archive/2007/03/26/long-paths-in-net-part-2-of-3-long-path-workarounds-kim-hamilton.aspx

Библиотека, что schnaader, связанный с, похож на него, сохранит Вас проблема P/Invoking в kernel32.dll, не уверенный, если Вы захотите взять зависимость от внешнего dll или нет.

9
ответ дан 8 December 2019 в 17:28
поделиться

Существуют подсказки для сокращения имени... посмотрите раздел, названный "Причина 4: Файлы существуют в путях, которые глубже, чем символы MAX_PATH" по http://support.microsoft.com/?kbid=320081#

2
ответ дан 8 December 2019 в 17:28
поделиться

Я получил решение относительно этой проблемы.

На R&D я нашел, что мы можем переименовать указанный каталог пути даже при том, что общая длина, превышают 260 символов, и затем мы можем скопировать файл от указанного местоположения до нового (Временного) местоположения для нашей цели сканирования. И наконец мы можем снова переименовать имя пути к файлу с исходным.

1
ответ дан 8 December 2019 в 17:28
поделиться
0
ответ дан 8 December 2019 в 17:28
поделиться

То, что я обычно делаю в этом экземпляре:

1) Считайте имя файла length

2) Если FileNameLength > 259 затем обрежьте имя файла достаточно, чтобы обработать новое имя и затем скопировать файл с обрезанным целевым именем.

0
ответ дан 8 December 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: