2014-06-30 68 views
0

我使用大量存储过程(〜1500)处理项目。这些存储过程中的大多数都包含散布在其中的USE“databaseName”语句。维护数据库的类似副本

问题:我目前正在处理的项目需要我维护两个版本的数据库。在一个版本中,我有一组不应该改变的基础数据,并且可以在需要时使用。另一个版本是来自第一个数据库的数据,以及对该数据的更改。

是否有人知道在给定时间更改使用哪个数据库的简单方法?

一种选择是使用不同的名称备份和恢复原始数据库。但是,这样做会破坏存储过程中的USE语句。我可以用新名称替换存储过程中旧数据库名称的所有情况,但误报可能会导致问题。另一种选择是制作整个SQL Server实例的副本,并连接到该副本。从网上搜索,这样做看起来像一个相当复杂的过程。

当然,这是一个常见问题,我忽略了一个简单的方法来处理这个问题?除了上述两种选择外,我从互联网搜索中看不到任何东西。

+0

您确定您在存储过程中使用了[databasename]吗?最后我检查了这是不允许的。或者,你的意思是从[databaseA]。[schema]。[table] join [database] .schema.table中选择x – SqlACID

回答

1

这是一个常见的问题,但它有一个共同的解决方案。维护不同的环境。通常你必须开发/测试/生产环境中,你点你在你想要的时候使用哪一个应用程序(通常从DEV> TEST> PROD移动)

你能在“拓展从网上搜索,这样做看起来像一个相当复杂的过程。“ ?

这是我看到它的工作方式:

  1. 安装SQL Server的另一个实例(这甚至可能是免费版,SQL Express的)。这只需要做一次
  2. 恢复你选择的数据集中到这里
  3. 点你的应用程序在它

困难的部分是在建立一个框架,用于访问困难的环境中,并确保数据每个都是你需要的。将应用程序指向不同的数据库服务器有什么限制吗?