簡體   English   中英

有人可以解釋通過SSIS和VS構建ETL時使用的“ BypassPrepare”連接參數嗎?

[英]Can someone explain the `BypassPrepare` connection-parameter used when building an ETL via SSIS and VS?

MSDN論壇:

如果將此選項設置為true,則准備工作(即解析)由要連接的數據庫引擎完成。 如果將此選項設置為false,則准備工作由Integration Services包完成。
由於pacakge(SQL任務)無法准備/解析OLEDB數據庫支持的所有SQL命令,因此引入了此選項,僅適用於OLEDB類型的連接 這意味着您將在解析階段出錯,並且將無法執行在OLEDB數據庫上有效的語句,但無法由SQL任務准備/解析的語句。
〜迪安·薩沃維奇

我只是說老實話,說我不明白這個答案。 我是網絡專家,並且(緩慢地)僅學習數據倉庫。


我的問題分為兩部分:
1.當Dean說“准備/解析”時,正在進行什么解析/准備?

2.據我了解,OLEDB是一個API。 對OLEDB接口的請求是否已序列化? 如果不是,什么會阻止Visual Studio + SSIS發送包含受支持命令的字符串?


我覺得這里缺少有關OLEDB連接的關鍵信息。 我還發現了關於該主題的其他2個SO問題,但兩個問題都使上面的引文引起了爭議。

首先,請務必記住BypassPrepare是Execute SQL Task的屬性,而不是數據庫連接。

該屬性使您可以切換設計時SQL語法檢查,創作包時,VS可以自動為您完成此檢查。 如果打開檢查並嘗試設置語法上不正確的SQL語句,則組件編輯器會告訴您它通常對您的所有想法,尤其是您的SQL編碼技能。

在禁用語法檢查的情況下,您可以向任務絕對喂食任何東西,在嘗試實際執行之前不會發生任何事情。 在這種情況下,您將遇到運行時異常。

如果像我和許多其他開發人員一樣,首先在功能強大的SQL編輯器(例如SSMS或類似工具)中編寫SQL語句,則可能根本不需要觸摸該選項,並且默認情況下禁用此語法檢查。

此屬性的另一個問題是,每次嘗試保存參數化SQL時,它都會引發錯誤警報。 我不確定它是否可以與ADO.Net一起正常使用,但是如果OLEDB連接參數由問號指定,則內置語法檢查器似乎很高興不知道組件功能的這一部分。

如果您在考慮SSIS是否將此屬性設置為False的預備語句切換到AFAIK,則不會這樣做。 在ETL中,典型查詢通常運行一次,並獲取表的大部分或全部行。 在執行之前准備這樣的語句不會獲得任何收益。 話雖如此,我可能實際上是錯的。 只需設置一個Profiler / XEvents跟蹤即可驗證這一點。

我的建議:將其保留為默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM