我使用RedGate SQL数据比较并生成了一个. SQL文件,这样我就可以在我的本地机器上运行它。但问题是文件超过300mb,这意味着我不能做复制和粘贴,因为剪贴板将无法处理它,当我尝试在SQL Server Management Studio中打开文件时,我得到一个关于文件太大的错误。
有没有办法运行一个大的。sql文件?该文件主要包含两个新表的数据。
我使用RedGate SQL数据比较并生成了一个. SQL文件,这样我就可以在我的本地机器上运行它。但问题是文件超过300mb,这意味着我不能做复制和粘贴,因为剪贴板将无法处理它,当我尝试在SQL Server Management Studio中打开文件时,我得到一个关于文件太大的错误。
有没有办法运行一个大的。sql文件?该文件主要包含两个新表的数据。
当前回答
您也可以使用这个工具。它真的很有用。
BigSqlRunner
注意:断链接,所以已经更新了它。
其他回答
我使用MSSQL Express 2014,没有一个解决方案为我工作。它们都让SQL崩溃了。因为我只需要运行带有许多简单插入语句的一次性脚本,所以我通过编写一个小小的控制台应用程序作为最后的手段:
class Program
{
static void Main(string[] args)
{
RunScript();
}
private static void RunScript()
{
My_DataEntities db = new My_DataEntities();
string line;
System.IO.StreamReader file =
new System.IO.StreamReader("c:\\ukpostcodesmssql.sql");
while ((line = file.ReadLine()) != null)
{
db.Database.ExecuteSqlCommand(line);
}
file.Close();
}
}
我有完全相同的问题,一直在斗争了一段时间,最后找到了解决方案,即设置一个参数sqlcmd,以改变它的默认数据包大小:
sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
我也有类似的问题。我的sql脚本文件大小超过150MB(其中包含近900k非常简单的insert)。我使用了Takuro建议的解决方案(作为这个问题的答案),但我仍然得到错误消息,说没有足够的内存(“内部”资源池中没有足够的系统内存来运行此查询”)。
对我有帮助的是,我在每50k insert之后添加GO命令。
(它不是直接解决问题(文件大小),但我相信它解决了与sql脚本本身的大容量间接相关的问题。在我的情况下,许多插入命令)
==> sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
我已经成功地完成了这个命令与365mb的sql文件。 该语法大约在15分钟内运行。 它帮我解决了一个花了我很长时间才弄明白的问题
该文件主要包含两个新表的数据。
然后,您可能会发现,如果两台服务器在同一网络上,那么仅通过DTS(或SSIS,如果这是SQL Server 2005+)传输数据会更简单。
如果两台服务器不在同一网络上,则可以备份源数据库并将其恢复到目标服务器上的新数据库。然后可以使用DTS/SSIS,甚至简单的INSERT INTO SELECT,将这两个表传输到目标数据库。