Sql-Server

sqlcmd 在導入 +10MB 查詢時返回 Msg 701

  • June 23, 2020

我有一個 powershell 腳本,它從 DBF 文件中導出數據,將它們保存為 .SQL 文件,然後使用sqlcmd命令將 SQL 文件導入 MS SQL 2016 。

我的 SQL 數據庫中的每個表都有一個 SQL 文件。SQL 文件刪除表,重新創建它並將數據插入到表中。

大多數 SQL 文件都很小,但是,我有 3 個文件,分別是 14MB、26MB 和 30MB。導入這些文件失敗並出現記憶體錯誤:

消息 701,級別 17,狀態 123,伺服器 SQL\INSTANCE02,行 -22204 資源池“內部”中的系統記憶體不足,無法執行此查詢。

所有 SQL 文件都有相當短的插入語句。即 30MB 的文件有 150610 條類似這樣的插入語句。

insert into [RITORDER] values(1668556,'   ',7452,6811,0,'F8429E4K4W',63267840,63269279,0,' ',0,0,'010203              ','',63267840,63269279,0,0,0,'      ',0,'               ',0,0,'','               ');

在 SQL\INSTANCE02 上,我將最大伺服器記憶體設置為 5000MB。所以我把它增加到了8000MB。

將最大伺服器記憶體升級為 ~3GB 後,10MB 文件被導入,而其他兩個“較大的文件”仍然失敗並顯示 701 消息。

由於 SQL\INSTANCE02 包含幾個小型數據庫,我不想再升級此實例的最大伺服器記憶體設置。

有沒有辦法可以調整命令,使其也可以執行 3 個“更大”的查詢?

我使用的命令是:

sqlcmd -S 'SQL\INSTANCE02' -U 'user' -P 'thisisnotmypassword' -d 'dbname' -i $ExportDir\$($file[1])

還是我應該使用完全不同的方法?

我最終使用了以下 StackOverflow 問題的解決方案:

https://stackoverflow.com/questions/36896391/insert-new-line-with-text-after-n-lines-and-3-lines-at-beginning-from-other-file

引用自:https://dba.stackexchange.com/questions/264753