我们有一个常见的问题,即将我们的开发SQL 2005数据库迁移到网站托管公司的共享Web服务器上。

理想情况下,我们希望系统将数据库结构和数据作为精确副本进行传输。

这通常可以通过恢复备份来实现。但由于它们是共享的SQL服务器,我们无法恢复备份–我们无法访问实际的机器。

我们可以生成一个脚本来创建数据库结构,但是我们无法通过菜单项Tasks / Import Data进行数据传输,因为我们可能会违反外键约束,因为表按照与数据库冲突的顺序导入架构。此外,如果将索引设置为自动生成,则可能无法复制索引。

因此我们留下了一个混乱的操作:

  1. 在SQL 2005中创建一个以SQL 2000格式生成数据库的脚本。
  2. 运行脚本以在SQL 2000中创建SQL 2000数据库。
  3. 在SQL 2000中创建一个脚本,生成没有索引和外键的数据库结构。
  4. 在生产服务器上运行此脚本。您现在有一个数据库结构可以将数据上传到。
  5. 使用SQL 2005通过任务/导入数据将数据传输到生产服务器。
  6. 使用SQL 2000生成一个脚本,该脚本使用索引和键创建数据库。
  7. 仅复制生成索引和外键的命令。它们位于表创建命令之后。注意:在SQL 2005中,索引和外键是一个生成的,不容易分开。
  8. 在生产数据库上运行此脚本。
  9. 瞧!上传数据库时包含所有数据和键/约束。这是一个多乱且容易出错的系统。

    还有更好的东西吗?

有帮助吗?

解决方案

Scott Gu写了几篇关于这个主题的帖子:

用于虚拟主机的SQL Server数据库发布工具包

其他提示

生成脚本适用于创建数据库对象,但不适用于传输数据库信息。例如,特定于客户端的数据库,其中开发人员需要预先填充一些数据。

我遇到的一个问题是SQL Server 2005+中的新MAX类型。 (nvarchar(max),varchar(max)等)当然,当您实际使用Sql Server Express时,情况会更糟,除了创建自己的脚本以创建数据之外,它不允许导出。

我建议您切换到允许您具备FTP备份文件的托管公司,并且不要求您使用自己的脚本。这就是SQL Server的重点,对吗?提供更多使用更友好的工具。如果托管公司拿走了它,你也可以转移到MySql,以便于转储信息。

WebHost4Life是此类别中的救星。他们向数据库服务器提供FTP以上传您的备份文件或MDF和LDF文件以供附件!当我看到GoDaddy有你提到的类似限制时,我感到非常沮丧。他们的工具没有告诉我这是一个糟糕的导入,我无法弄清楚为什么我的网站有500个错误回来。

另一个注意事项:我不确定哪个被认为更安全。我在GoDaddy中启用了外部连接并与Management Studio连接,我能够看到该服务器上的每个数据库!我无法访问它们,但我现在有了这些信息。双重打击是GoDaddy要求DB的用户名与DB相同!现在您需要做的就是针对数百个数据库的垃圾邮件密码!

另一方面,Webhost4life只在Management Studio中显示您的特定数据库。它们允许您选择自己的数据库名称和用户名,彼此独立。它们仅在用户和用户的末尾附加相同的唯一ID。数据库名称是为了防止它们与其他人发生冲突。

您不应该依赖于还原备份来复制/传输数据库。你需要使用脚本 - 相信我你会变得更好。

我使用RedGate Compare工具和共享主机,效果很好。

数据库生成脚本 凌乱,但它们也有几个优点......好吧,让痛苦更容易忍受。

首先,如果您将DB脚本视为真正的编程任务,那么您可以封装混乱。如果您生成一次脚本(使用数据库工具),则可以从约束方面(键,索引等)拆分表结构方面。同样,您可以导出一次数据,但将其拆分为“系统”数据。数据不经常更改,但对于正确操作(如税或运费等等),可轻松识别的“测试”数据,以及需要从DB版本旧版本转移到DB版本新版本的“操作”数据(上周的订单。

完成后的前3分钟,情况非常好:您可以在几分钟内使用或不使用测试数据重新生成新数据库。不幸的是,在3分钟之后,数据库不同步,至少在数据方面,如果结构方面不那么频繁。

我个人喜欢将每个表的结构作为一个单独的SQL文件(它的约束作为单独目录中的单独文件,它是一个文件中的测试数据,另一个文件中的系统数据等)。一方面,这意味着在进行更改时必须触摸几个不同的文件,但另一方面,它使得更容易看到已更改的内容的粒度:它在版本控制日志中就可以了。 (我可能会相信很多文件都是错误的策略......)

所有这一切都基于这样的假设,即你有一些实际运行涉及许多文件的复杂脚本的工具,而不仅仅局限于某些基于Web的控制面板,这可能是你在描述时所描述的内容。 ;我们无法访问实际的机器。“我觉得你不能做自定义软件开发,也没有在服务器上进行某种类型的shell访问;托管业务具有足够的竞争力,您当然可以轻松找到适合脚本的主机。

检查webhsoting公司是否提供 myLittleBackup 这绝对是“安装”的最简单的解决方案。从开发服务器到共享sql服务器的数据库

回答SQL Server 2008用户。

我和OP有同样的问题,但我使用的是SQL Server 2008,我的共享托管公司是GoDaddy。以下是将DB +数据复制到GoDaddy数据库的解决方案......

在Visual Studio 2010中,转到服务器资源管理器(在VS Express中,我认为它称为数据库资源管理器)。右键单击数据库并选择Publish to Provider ...这将打开数据库发布向导...通过向导,它将在本地计算机上创建一个xxx.sql文件...

打开SQL Server Management Studio并连接到GoDaddy数据库(您应该已经通过其网站中的GoDaddy控制面板创建了这个...)

打开Windows资源管理器并找到xxx.sql文件并双击它。该脚本应该在SSMS中打开。在适当的数据库中执行脚本“ ......瞧,完了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top