从 SQL 脚本导入总是失败

Posted

技术标签:

【中文标题】从 SQL 脚本导入总是失败【英文标题】:Import from SQL Scripts Always Fails 【发布时间】:2016-06-08 14:49:37 【问题描述】:

我已使用 SQL Management Studio 将我的数据库作为单个文件和多个文件导出到 SQL 脚本。在这两种情况下,当我在 VS.net 2015 中创建一个空的数据库项目并选择“导入...脚本”,然后选择我的一个大脚本,或者多个脚本的文件夹都不会在项目中创建任何人工制品。

多文件导入文件的日志给出

08/06/2016 15:33:18 This log contains information about the import operation of the script 'dbo.SOMETABLENAME.Table.sql' into project 'MYPROJECTNAME' on computer 'MYCOMPUTER' by user'philliph.
08/06/2016 15:33:33 Started importing file: C:\Users\philliph\AppData\Local\Temp\tmp29BA.tmp 
08/06/2016 15:33:33 File name C:\Users\philliph\AppData\Local\Temp\tmp29BA.tmp (size: 5800811)
08/06/2016 15:33:33 Parsing import script
08/06/2016 15:34:07 A summary of the import was saved to the following location: MYSOURCELOCATION\Import Script Logs\dbo_FIRSTTABLENAME__20160608023318.log
08/06/2016 15:34:07 Click Finish to continue...

单个文件导入的日志文件没有提供更多有用的信息。我尝试使用 ASCII 或 UNICODE 格式从 SQL Server 导出,脚本本身看起来不错。我可以直接从数据库本身导入数据库项目,但我不想这样做,因为我有很多 SQL 复制数据库工件,我不想置于源代码控制之下,以及 Management Studio 中的脚本导出允许我过滤掉那些。

有没有人成功地从脚本导入或者这有什么秘密?我注意到日志似乎创建了一个大的临时文件,但是一旦工具完成处理(这需要几分钟),它就会被删除,所以我不知道它包含什么。

【问题讨论】:

我已经设法将 import from script 用于一次性的新对象,但从未尝试使用它来填充初始项目。为此,我总是使用 dacpac 或直接连接。 dacpac 实际上给了我更好的成功,因为它倾向于忽略依赖关系。 【参考方案1】:

郑重声明,我从未找到从脚本成功导入的方法。我试图这样做是为了避免从我的实时数据库中导入复制工件。根据http://weblogs.asp.net/gunnarpeipman/using-visual-studio-database-projects-in-real-life 中发布的想法,我使用模式比较工具在我的实时数据库和空数据库项目之间生成比较。这个工具允许我在将比较应用到我的数据库项目之前过滤掉我想要的任何数据库对象。

虽然它没有解决我最初的问题,但这种解决方法可能对其他人有用。

【讨论】:

以上是关于从 SQL 脚本导入总是失败的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver2005怎么执行260M的大脚本文件? 打开脚本总是报“未能完成操作,存储空间不足”

SQL SERVER 2008 R2 数据库附加到 SQL server 2005,怎么整

从 SQLPlus 运行 SQL 脚本失败时如何查看错误?

从 SQL 代理运行时 SSIS 脚本任务失败

怎么从SQL数据库中导出 数据表 和导入脚本

怎样从数据库中读出数据,然后导入新的数据库?