我正在开发一个使用多个数据库的Grails应用程序,其他是只读的,1是应用程序的“主数据库”。此外,还有多种环境:dev,qa,prod。 qa用于释放测试,与prod相同。
总是在发布测试之前我需要用“main”prod-database覆盖“main”qa-database。我没有SQL-user访问运行MS SQL实例的服务器。
我需要的是在qa-database中删除所有而不丢弃数据库本身并从prod-database导入所有内容的魔力。数据库包含许多外键约束。
如何实现上述目标?
P.S。
我在MySQL上做过这个,但现在我们已经迁移到了MS SQL。我的MySQL脚本有点像(伪):
SET foreign_key_checks = 0;
-- Drop all tables..
SET foreign_key_checks = 1;
-- Import prod-dump to DB..
答案 0 :(得分:0)
您不应该在直接T-SQL中执行此操作。
你真的应该在.NET中使用类似SMO Scripting的东西来以这种方式导出对象。在纯SQL代码中有 NO 干净的方式来执行您所要求的操作。
如果您计划仅从系统表构建动态SQL,则需要考虑太多变量,这是在T-SQL中处理此问题的唯一方法。
答案 1 :(得分:0)
我认为工具"xSQL Data Compare"完全符合您的要求。至少对于qa-DB,您将需要“sa”访问权限。