Sql-Server
sqlcmd 在導入 +10MB 查詢時返回 Msg 701
我有一個 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 問題的解決方案: