当您将数据库设计和应用程序设计平滑然后部署到共享主机时,在本地 SQL Server 2005 机器上进行开发的最佳方法是什么?
在 MySQL / phpMyAdmin 世界中,您可以选择将表导出为 DDL 语句,其中数据表示为 DDL 后面的一堆插入。使用它,您可以删除一个表,重新创建它,然后从查询窗口中加载数据。
在微软的世界里有什么接近这个的吗?是否有任何免费/开源工具可以帮助进行这种数据迁移?
当您将数据库设计和应用程序设计平滑然后部署到共享主机时,在本地 SQL Server 2005 机器上进行开发的最佳方法是什么?
在 MySQL / phpMyAdmin 世界中,您可以选择将表导出为 DDL 语句,其中数据表示为 DDL 后面的一堆插入。使用它,您可以删除一个表,重新创建它,然后从查询窗口中加载数据。
在微软的世界里有什么接近这个的吗?是否有任何免费/开源工具可以帮助进行这种数据迁移?
SQL Server Management Studio Express(免费)包括 TheTXI 提到的“生成脚本”选项。
数据库发布向导是一个更轻量级的产品(也是免费的),专门用于为模式和数据生成导出脚本。
警告——两者都不是 100% 可靠的。我有时不得不修改脚本以使它们运行,尤其是在依赖对象的顺序方面。这是一种痛苦,但仍然比从头开始好。
正如 RedBeard 所提到的,您应该跟踪您的 DDL 脚本,特别是那些将您从数据库的一个版本升级到下一个版本的“差异”脚本。在这种情况下,这些工具在正常的开发周期中将无用。但是,如果您没有以这种方式管理脚本,这些工具可以帮助您入门,并且还可以用于创建新实例、迁移实例、比较快照以及许多其他事情。
生成所有数据库模式(表、存储过程、视图等)的脚本,并导出数据(如有必要),然后运行这些脚本并将数据导入共享主机。根据该主机,您可以通过 Management Studio 进行访问,这将是一个更简单的过程。
几个选项:
您有一组脚本可以执行来创建或更新您的数据库。您实际上可以从 SQL Server 数据库本身中提取 DDL 语句。查看 INFORMATION_SCHEMA 系统视图。
例如,要获取有关存储过程及其定义的信息,请查看 ROUTINE_DEFINITION 字段(请记住,您会发现一些您未定义但内置于 sql server 的其他过程):
SELECT SPECIFIC_SCHEMA,SPECIFIC_CATALOG, SPECIFIC_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
基本上它会为您完成上述工作并简化数据库的设置和修订控制。它允许您定义数据和结构,还具有许多单元测试功能。
备份您的本地数据库,将其上传到您的主机,在那里恢复数据库。
与备份/恢复类似,您需要分离数据库,将文件复制或移动到您的网络主机,然后重新连接到那里。
应该有几个例子来说明如何做到这一点。它将数据库视为文件,但它确实需要在 Web 主机上安装 SQL Server 引擎。
例如,取自 ASP.NET MVC 模板 (web.config):
<connectionStrings>
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
TheTXI的解决方案很好。进行备份和恢复也可以,有时(取决于 ISP/主机对 MS SQL 的锁定)是唯一的选择。
您还可以选择提供 myLittleBackup (www.mylittlebackup.com) 等工具的共享托管公司,以便您可以轻松地在共享服务器上安装/恢复您的数据库。