我使用RedGate SQL数据比较并生成了一个. SQL文件,这样我就可以在我的本地机器上运行它。但问题是文件超过300mb,这意味着我不能做复制和粘贴,因为剪贴板将无法处理它,当我尝试在SQL Server Management Studio中打开文件时,我得到一个关于文件太大的错误。

有没有办法运行一个大的。sql文件?该文件主要包含两个新表的数据。


当前回答

你的问题和我的问题很相似

您可以将文件/脚本保存为.txt或. Sql,并从Sql Server Management Studio中运行它(我认为菜单是打开/查询,然后在SSMS界面中运行查询)。您可能必须更新第一行,指示要在本地机器上创建或选择的数据库。

如果必须经常进行这种数据传输,那么可以进行复制。根据您的需要,快照复制也可以。如果必须在两台服务器之间同步数据,则可以采用更复杂的模型,如合并复制。

编辑:我没有注意到你与SSMS链接到文件大小的问题。然后,您可以像其他人建议的那样使用命令行,快照复制(在您的主服务器上发布,在您的本地服务器上订阅,复制,然后取消订阅),甚至备份/恢复

其他回答

该文件主要包含两个新表的数据。

然后,您可能会发现,如果两台服务器在同一网络上,那么仅通过DTS(或SSIS,如果这是SQL Server 2005+)传输数据会更简单。

如果两台服务器不在同一网络上,则可以备份源数据库并将其恢复到目标服务器上的新数据库。然后可以使用DTS/SSIS,甚至简单的INSERT INTO SELECT,将这两个表传输到目标数据库。

对于所有仍然遇到导入大型SQL转储问题的人来说,可能还有另一种方法。

在可能的情况下还需要考虑什么:如果您可以访问服务器,您可以将数据库分成多个部分导出,比如首先导出结构,然后按表(或相关对象)导出更小的数据块,而不是一个大文件。

当您无法访问服务器和/或必须使用现有的大文件时,您可以尝试使用SQLDumpSplitter: https://philiplb.de/sqldumpsplitter3/将它们拆分为多个部分。

然后导入这些片段以获得数据库的完整副本。

祝你们好运。

我使用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 -S [servername] -d [databasename] -i [scriptfilename] -a 32767

我已经成功地完成了这个命令与365mb的sql文件。 该语法大约在15分钟内运行。 它帮我解决了一个花了我很长时间才弄明白的问题

你的问题和我的问题很相似

您可以将文件/脚本保存为.txt或. Sql,并从Sql Server Management Studio中运行它(我认为菜单是打开/查询,然后在SSMS界面中运行查询)。您可能必须更新第一行,指示要在本地机器上创建或选择的数据库。

如果必须经常进行这种数据传输,那么可以进行复制。根据您的需要,快照复制也可以。如果必须在两台服务器之间同步数据,则可以采用更复杂的模型,如合并复制。

编辑:我没有注意到你与SSMS链接到文件大小的问题。然后,您可以像其他人建议的那样使用命令行,快照复制(在您的主服务器上发布,在您的本地服务器上订阅,复制,然后取消订阅),甚至备份/恢复