2012-07-03 178 views
52

我正在使用SQL Server 2008 R2,我有一個腳本來更新數據庫,該腳本的大小約爲 50 MB,包含大約800,000行。在SQL Server 2008 R2上運行50 MB腳本時出現錯誤

錯誤:

TITLE: Microsoft SQL Server Management Studio

Cannot execute script.

ADDITIONAL INFORMATION:

Insufficient memory to continue the execution of the program. (mscorlib)

有人可以幫我沒有得到這個錯誤運行此腳本?

回答

84

使用更精簡內存的命令行工具SQLCMD。因爲它是非常簡單的:

SQLCMD -d <database-name> -i filename.sql 

您需要有效的憑據來訪問SQL Server實例,甚至訪問數據庫

+0

當我用上面的代碼是給我一些錯誤, 消息4060,級別11,狀態1,服務器(我的電腦登錄名),線試了一下1 無法打開登錄請求的數據庫「(本地)」。登錄失敗。消息18456,級別14,狀態1,服務器(我的PC登錄名),第1行登錄失敗,用戶'我的登錄用戶名'。 –

+0

,因爲答案是錯誤的,是參數「-d」的數據庫 –

+0

我對新數據庫使用SQLCMD -d master -i D:\ BankMaster.sql – RckLN

53

添加到@ user1293068的答案,我需要指定實例名稱。這是我的完整語法:

sqlcmd -S <ComputerName>\<InstanceName> -d <DatabaseName> -i <MyScript.sql> 

這是Technet上的Use the sqlcmd Utility文章記錄。

(請注意,您必須輸入「-S」開關值,而不是「-s」開關是區分大小寫的。)

+1

不錯,乾淨。 – misha

+2

我用過的例子 - >'C:\ Users \ tstick \ Documents> sqlcmd -S server.subdomain.companyname.com,4184 -d ebimap -i SQLscript.sql' –

+1

它看起來像默認實例名稱(MSSQLSERVER )需要排除連接,例如'sqlcmd -S localhost -d db'而不是'sqlcmd -S localhost \ MSSQLSERVER -d db' – BurnsBA

9

您也可以嘗試增加服務器屬性中的最大服務器內存值。
要編輯此設置,請右鍵單擊服務器名稱,然後選擇「屬性」>「內存」選項卡。

我遇到了這個錯誤試圖SSMS 2012
執行30MB SQL腳本值增加從1024MB2048MB我能夠運行該腳本後。

+0

謝謝..爲我工作.. – Mahib

+0

很好的答案!謝謝。 –

+0

無法自己驗證。「用戶無權執行此操作」 –

6

好吧,沒有任何答案足以讓我的腳本成功恢復。

所以:

  1. 確保您的網絡帳戶有足夠的權限來訪問SQL Server實例,並要還原的特定數據庫。

  2. 這是最好的,你打算要還原的數據庫確實存在,如果它僅僅是由生成腳本生成的(經過修改,包括模式和數據)

  3. 運行在管理員模式下的命令行工具(如果需要),例如,從開始菜單上的運行鍵入CMD

  4. 在命令行工具中鍵入類似"SQLCMD -d CMS -i C:\Carnotaurus\Data\script.sql"的東西。這裏,CMS是我打算還原的數據庫的名稱,而"C:\Carnotaurus\Data\script.sql"是由SMSS中的生成腳本生成的還原腳本的完整文件路徑。

我希望這會清除一些缺失的步驟。

-1

我在SQL Server 2012中也遇到類似的問題,因爲我的文件大小是70MB。

解決方案,爲我工作,增加日誌文件爲無限。

  1. 打開SQL Server Management Studio中
  2. 在對象資源管理器,右擊數據庫名稱,然後單擊屬性
  3. 在文件部分,更改自動增長數據和日誌的大小尺寸爲無限制。
+0

無關的答案 –

+0

@Charush請問您可以請刪除你的答案?它完全不相關。 – Zeeshan

7

如果憑據才能

sqlcmd -S <ComputerName>\<InstanceName> -U <username> -P <password> -d <DatabaseName> -i <MyScript.sql> 
相關問題