我们有一个常见的问题,即将我们的开发SQL 2005数据库迁移到网站托管公司的共享Web服务器上。
理想情况下,我们希望系统将数据库结构和数据作为精确副本进行传输。
这通常可以通过恢复备份来实现。但由于它们是共享的SQL服务器,我们无法恢复备份 - 我们无法访问实际的计算机。
我们可以生成一个脚本来创建数据库结构,但是我们无法通过菜单项Tasks / Import Data进行数据传输,因为我们可能会违反外键约束,因为表按照与数据库冲突的顺序导入架构。此外,如果将索引设置为自动生成,则可能无法复制索引。
因此我们留下了一个混乱的操作:
瞧!上传数据库时包含所有数据和键/约束。这是一个多乱且容易出错的系统。
还有更好的东西吗?
答案 0 :(得分:4)
Scott Gu写了几篇关于这个主题的帖子:
答案 1 :(得分:2)
生成脚本适用于创建数据库对象,但不适用于传输数据库信息。例如,特定于客户端的数据库,其中开发人员需要预先填充一些数据。
我遇到的一个问题是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。数据库名称是为了防止它们与其他人发生冲突。答案 2 :(得分:1)
您不应该依赖于还原备份来复制/传输数据库。你需要使用脚本 - 相信我你会变得更好。
答案 3 :(得分:1)
我使用RedGate Compare工具和共享主机,效果很好。
答案 4 :(得分:1)
数据库生成脚本 凌乱,但它们也有几个优点......好吧,让痛苦更容易忍受。
首先,如果您将DB脚本视为真正的编程任务,那么您可以封装混乱。如果您生成一次脚本(使用数据库工具),则可以从约束方面(键,索引等)拆分表结构方面。同样,您可以将数据导出一次,但将其拆分为“系统”数据,这些数据不经常更改,但对于正确操作(如税或运费等等),“测试”数据很容易识别,以及'需要从DB版本Old移动到DB版本New(上周的订单)的操作'数据。
完成后的前3分钟,情况非常好:您可以在几分钟内使用或不使用测试数据重新生成新数据库。不幸的是,在3分钟之后,数据库不同步,至少在数据方面,如果结构方面不那么频繁。
我个人喜欢将每个表的结构作为一个单独的SQL文件(它的约束作为单独目录中的单独文件,它是一个文件中的测试数据,另一个文件中的系统数据等)。一方面,这意味着在进行更改时必须触摸几个不同的文件,但另一方面,它使得更容易看到已更改的内容的粒度:它在版本控制日志中就可以了。 (我可能会相信很多文件都是错误的策略......)
所有这一切都基于这样的假设,即你有一些实际运行涉及许多文件的复杂脚本的工具,而不仅仅局限于某些基于Web的控制面板,这可能是你所说的当你说“我们无法访问实际的机器。“我觉得你不能做自定义软件开发,也没有在服务器上进行某种类型的shell访问;托管业务具有足够的竞争力,你当然可以轻松找到适合脚本的主机。
答案 5 :(得分:0)
检查网络公司是否提供myLittleBackup 这绝对是将db从开发服务器“安装”到共享sql server的最简单的解决方案
答案 6 :(得分:0)
回答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中打开。在“正确的数据库中”执行脚本......瞧,完成。