本文可協助您解決從 SQL Server 擷取數據時錯誤。
原始產品版本: SQL S
原始 KB 編號:
存取 Active Server Pages 中的記錄集時,會發生下列錯誤 (ASP) 檔案,其中包含 或 輸入 SQL 數據表中的數據:
Microsoft OLE DB Provider for ODBC Drivers 錯誤 ''
下列情況可能會導致發生錯誤:
文字/Blob 欄位會依其他欄位類型的順序選取。
處理來自 Microsoft SQL Server 的 BLOB 欄位時,您必須將它們放在結果集非 BLOB 資料行的右邊。 為了安全起見,您也應該以從左至右的順序讀取數據行,因此如果您在結果集中有兩個 BLOB 資料行做為最後兩個數據行,請先讀取第一欄,然後讀取第二欄。 請勿以相反的順序讀取它們。
若要示範欄位選取的正確順序,請在 Visual InterDev 專案中建立新的 ASP 頁面,並將下列程式代碼貼到空白的 ASP 頁面中。 變更 連接字串 以連線到您的 SQL Server:
產生此錯誤是系統刻意為之。 不過,使用 Mdac 2.1 sp2 或更新版本搭配 3.7 驅動程式或更新版本進行 SQL Server 時,並不會發生此情況。
SQL Server 會在網路上傳回數據,而用戶端基本上會在網路網路上循序接收讀取的位數據流。 使用系結數據行 (也就是,這些值可以複製到本機記憶體緩衝區,並在該處快取) ,驅動程式會將這些數據行中的數據傳輸到記憶體緩衝區。 一旦數據在本機緩衝區中,您就可以依任何順序讀取數據。 因此,當所有數據行系結 (不是 BLOB) 時,您可以依任何順序讀取結果數據行。
當您包含 BLOB 數據行時,數據行的長度大約可以是 2 GB,而且數據存取連結庫通常不會繫結這些數據行,因為驅動程式通常無法判斷 BLOB 在擷取之前有多大。 此外,數據存取連結庫通常會避免快取 BLOB 數據,因為這可能會耗用大量記憶體,而且會在數據存取連結庫中快取它,而且您的應用程式效率不佳。 如果要求數據存取驅動程式傳回 BLOB 數據行的內容,它通常會捨棄要求之 BLOB 數據行前面的非系結數據行,因為它必須先擷取循序數據流,才能讀取要求的數據行。 因此,從左至右讀取結果集會更有效率,因為這符合擷取數據的方式。
或許更好的替代方法是避免使用 Text 數據行。 因為 SQL Server 以 2K 區塊配置空間,所以如果文字長度很小,使用 Text 數據行可能會導致記憶體的使用效率不佳。 備份時間也會受到影響,因為傾印事務歷史記錄需要較長的時間。 通常最好是建立另一個具有現有數據表 PK、區塊編號數據行和 數據行的數據表。 將文字分割成所需的 255 個字元區塊,並在新的數據表中插入與區塊一樣多的數據列。 通常值得額外的編碼時間,因為您可以更有效率地使用記憶體,而備份的速度會更快。
到此这篇sqlldr导入大量文件的数据(sqlldr导入数据不全)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/22237.html