для других, которые нашли это в поиске:
Я часто получаю это, когда случайно вызываю функцию, используя имя класса, а не имя объекта. Обычно это происходит потому, что я даю им слишком похожие имена: P
ie:
MyClass myclass = new MyClass();
// then later
MyClass.someFunction();
Это, очевидно, статический метод. (хорошо для чего-то) Но то, что я действительно хотел сделать (в большинстве случаев было)
myclass.someFunction();
Это такая глупая ошибка, но каждые пару месяцев я теряю около 30 минут, возившись с vars в Определения «MyClass» для определения того, что я делаю неправильно, когда это действительно так, это просто опечатка.
Смешное примечание: переполнение стека подчеркивает синтаксис, чтобы сделать ошибку действительно очевидной здесь.
Нет никакого 64-разрядного Струйного поставщика OLEDB, таким образом, Вы не можете получить доступ к файлам Excel от 64-разрядного SSIS.
Однако можно использовать 32-разрядный SSIS даже на 64-разрядном сервере. Это уже установлено при установке 64-разрядной версии и всего, что необходимо сделать, выполняется 32-разрядный DTEXEC.EXE - установленный тот Program Files (x86)\Microsoft Sql Server\90\Dts\Binn
(замените 90 100 при использовании 2008 SSIS).
Можно использовать соединение Excel в среде на 64 бита. Перейдите к свойствам конфигурации пакета.
При отладке-> Параметры отладки-> Run64BtRuntime-> изменяются на Ложь, Кроме того, при использовании SQL Agent, переходят к свойствам шага задания и затем проверяют время выполнения на 32 бита.
примечание: это только относится к отладке в рамках Visual Studio...
Если это не бизнес-требование, я предлагаю, чтобы Вы переместили строку подключения от командной строки до пакета и использовали конфигурацию пакета для определения пути к файлу Excel (чтобы не к твердому коду это). Это поможет поддержать.
"Data Source=" + @[User::FilePath] + ";Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE IV;"
Более тщательно изучите строку подключения выше. Это взято от рабочего пакета. Я не уверен в этом, но возможно Вам не нужны никакие кавычки вообще (те выше только там, потому что редактор выражений требует их).
У меня также были некоторые проблемы с SSIS на 64-разрядном SQL Server 2005. То сообщение из моего блога не отвечает на Ваш вопрос, но это несколько связано так, я отправляю ссылку.
Я вроде сделал то, что сделал доктор Зим, но я скопировал файл DTExec C: \ Program Files (x86) \ Microsoft SQL Server \ 90 \ DTS \ Binn \ DTExec.exe
в C: \ Program Files \ Microsoft SQL Server \ 90 \ DTS \ Папка Binn \
, но названная 32-битная для DTExec32.exe
, тогда я смог запустить скрипт SSIS через сохраненный процесс:
set @params = '/set \package.variables[ImportFilename].Value;"\"' + @FileName + '\"" '
set @cmd = 'dtexec32 /SQ "' + @packagename + ' ' + @params + '"'
--DECLARE @returncode int
exec master..xp_cmdshell @cmd
--exec @returncode = master..xp_cmdshell @cmd
--select @returncode