Ve výchozím nastavení poběží na serverech vše v 64bitové verzi. Chcete-li toto chování změnit, musíte uvést, že 32bitová verze dtexec by měl být použit. Pro SSISDB 2012 máme dva snadné způsoby vyvolání našich balíčků:SQL Agent a catalog.start_execution
metoda.
catalog.start_execution
Pro spuštění balíčku s jednou porcí můžete balíček najít v katalogu SSISDB a kliknutím na něj pravým tlačítkem Execute...
Ve výsledném vyskakovacím dialogovém okně budete muset přejít na kartu Upřesnit a zkontrolovat 32-bit runtime
box. To by bylo provedeno při každém spuštění balíčku.
V zákulisí by SQL, které průvodce generuje, vypadalo takto
DECLARE @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution]
@package_name = N'Package.dtsx'
, @execution_id = @execution_id OUTPUT
, @folder_name = N'POC'
, @project_name = N'SSISConfigMixAndMatch'
, @use32bitruntime = True
, @reference_id = NULL
SELECT
@execution_id
DECLARE @var0 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@execution_id
, @object_type = 50
, @parameter_name = N'LOGGING_LEVEL'
, @parameter_value = @var0
EXEC [SSISDB].[catalog].[start_execution]
@execution_id
GO
Jak můžete vidět, @use32bitruntime
parametru je předána hodnota True, která indikuje, že by měl běžet v 32 prostoru.
Agent SQL
Pro opakované spouštění balíčků obecně používáme plánovací nástroj. Chcete-li se dostat na 32bitové nastavení pro balíček v agentovi, je to v podstatě stejná cesta pro kliknutí s tím rozdílem, že nejprve musíte kliknout na kartu Konfigurace a pak klikněte na kartu Upřesnit a vyberte 32-bit runtime
Definice kroku úlohy by vypadala nějak takto
EXEC msdb.dbo.sp_add_jobstep
@job_name = N'Do it'
, @step_name = N'Run in 32bit'
, @step_id = 1
, @cmdexec_success_code = 0
, @on_success_action = 1
, @on_fail_action = 2
, @retry_attempts = 0
, @retry_interval = 0
, @os_run_priority = 0
, @subsystem = N'SSIS'
, @command = N'/ISSERVER "\"\SSISDB\POC\SSISConfigMixAndMatch\Package.dtsx\"" /SERVER "\".\dev2014\"" /X86 /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E'
, @database_name = N'master'
, @flags = 0
Uvidíte, že ve volání @command průvodce vygeneruje /X86
call, což je speciální argument vyhrazený pro SQL Agent (zkontrolujte odkaz BOL na začátku), abyste určili, zda má být použita 32 nebo 64bitová verze dtexec. Vyvolání příkazového řádku by vyžadovalo, abychom explicitně použili správný dtexec. Ve výchozím nastavení bude 64bitový dtexec uveden jako první ve vašem prostředí PATH
64bitová umístění dtexec
- C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
- C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
- C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
- C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe
32bitová umístění dtexec
- C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
- C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
- C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
- C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe
Další ovladače pro odstraňování problémů
Na jednom serveru běží, na jiném ne.
Krok 1 – ověřte, že jste nainstalovali ovladače. Hloupé, zřejmé, ale vyskytlo se mnoho otázek, kdy se lidé mylně domnívali, že nasazení balíčku SSIS/.ispac by také nasadilo všechna odkazovaná sestavení. Není to nuget, takže ne, všechny předpoklady by musely být nainstalovány a správně nainstalovány (viděno, že se lidé pokoušejí zkopírovat sestavení do GAC namísto použití nástroje)
Krok 2 – ověřte, že se instalace ovladače shoduje na všech serverech. Opět se to zdá zřejmé, ale pocítil jsem bolest, obecně VS_NEEDSNEWMETADATA, bodový rozdíl ve verzi ovladače 4.0.2.013 přinesl jiné výsledky než 4.0.2.014
Krok 3 – Ujistěte se, že všechna DSN, která jste definovali, byla definována ve správném prostoru. Tenhle kousne lidi z mnoha důvodů. Myslím, že až do Serveru 2012 jste se mohli dostat k 32bitové verzi odbcad32.exe (spustitelný soubor související s administrativními nástroji -> Zdroje dat (ODBC)) pouze tím, že jste ji našli v systému souborů. O to více matoucí je, že se spustitelný soubor jmenuje odbcad32.exe bez ohledu na to, zda je v System32 nebo SysWOW64 a tyto dvě složky jsou pro 64bitové ovladače a 32bitové ovladače. Ano, budoucí čtenáři, to není překlep. 64 verzí aplikací je v System32, 32bitové verze jsou v SysWOW64. Bylo to designové rozhodnutí, které mělo minimalizovat dopad.
Na testovacím a živém serveru spusťte C:\Windows\SysWOW64\odbcad32.exe
Najděte ovladače FoxPro a související DSN, jsou podle očekávání?
Krok 4 – Podivná kontrola oprávnění. Přihlaste se k oběma serverům jako "normální" účet a spusťte balíček z příkazového řádku. Opakujte tento krok, ale proveďte jej pomocí agenta, s jakýmkoli proxy serverem, který jste mohli nebo nemuseli definovat. Pokud první funguje, ale druhý selže, obvykle to znamená problém s oprávněním. Je možné, že účet SQL Server nebo Agent nemůže získat přístup k jakékoli složce, do které byl ovladač nainstalován. Je možné, že uvedený účet potřebuje oprávnění InteractWithDesktop nebo jiné oprávnění, které je odepřeno nebo není výslovně uděleno.