【问题标题】:Develop Locally on SQL Server 2005 then Deploying to Shared Hosting在 SQL Server 2005 上本地开发,然后部署到共享主机
【发布时间】:2009-05-26 16:23:51
【问题描述】:

什么是在 SQL Server 2005 机器上进行本地开发的最佳方式,同时您将数据库设计和应用程序设计平滑,然后部署到共享主机?

在 MySQL / phpMyAdmin 世界中,您可以选择将表导出为 DDL 语句,其中数据表示为 DDL 之后的一堆插入。使用它,您可以删除一个表,重新创建它,然后从查询窗口中加载数据。

在微软世界里有什么与此类似的吗?是否有任何免费/开源工具可以帮助迁移数据?

【问题讨论】:

    标签: .net sql sql-server hosting data-migration


    【解决方案1】:

    SQL Server Management Studio Express(免费)包括 TheTXI 提到的“生成脚本”选项。

    Database Publication Wizard 是一个更轻量级的产品(也是免费的),专门用于为模式和数据生成导出脚本。

    警告——两者都不是 100% 可靠的。我有时不得不修改脚本以使它们运行,特别是在依赖对象的顺序方面。这很痛苦,但总比从头开始好。

    正如 RedBeard 所提到的,您应该跟踪您的 DDL 脚本,尤其是那些将您从数据库的一个版本升级到下一个版本的“差异”脚本。在这种情况下,这些工具在正常的开发周期中将没有用处。但是,如果您没有以这种方式管理脚本,那么这些工具可以帮助您入门,并且还适用于创建新实例、迁移实例、比较快照以及许多其他事情。

    【讨论】:

    • 我已经在锁定的主机 (GoDaddy) 上成功使用了数据库发布向导。
    • 是的,这也是我遇到的情况。此外,由于您无法远程访问这些数据库,我不得不开发自己的基于 Web 的界面来运行大型脚本批处理,例如由这些实用程序生成的脚本。
    • 有趣。我在 2005 年或 2006 年向 Microsoft 员工(SQL Server 顾问)询问了类似的工具。看起来对它的需求终于足够了。想知道他们是否会将 DPW 构建到 SQL Server 产品中。这正是我想要的。
    【解决方案2】:

    生成所有数据库架构(表、存储过程、视图等)的脚本,并导出数据(如有必要),然后运行这些脚本并将数据导入共享主机。根据该主机,您可以通过 Management Studio 进行访问,这将是一个更简单的过程。

    【讨论】:

    • 您还应该以什么格式导出数据?我正在处理 15 到 20 张桌子。
    • 最简单的形式是某种形式的 CSV(逗号分隔值)列表,可以是文本文件,也可以是 Excel 电子表格。无论您导出它,您都可以重新导入它。如果他们不支持收回它,他们就不会给你选择。
    【解决方案3】:

    几个选项:

    跟踪数据库的 DDL 脚本

    您有一组可以执行的脚本来创建或更新您的数据库。您实际上可以从 SQL Server 数据库本身中提取 DDL 语句。查看 INFORMATION_SCHEMA 系统视图。

    例如,要获取有关存储过程及其定义的信息,请查看 ROUTINE_DEFINITION 字段(请记住,您会发现一些您未定义但内置于 sql server 的其他过程):

    SELECT SPECIFIC_SCHEMA,SPECIFIC_CATALOG, SPECIFIC_NAME, ROUTINE_DEFINITION 
    FROM INFORMATION_SCHEMA.ROUTINES
    

    使用 Visual Studio 数据库团队版(开发团队版附带)

    基本上,它会为您完成上述工作并简化数据库的设置和修订控制。它允许您定义数据和结构,还具有许多单元测试功能。

    本地数据库的备份和恢复

    备份你的本地数据库,上传到你的主机,在那里恢复数据库。

    复制/移动您的 MDF/LDF 文件

    与备份/恢复类似,您需要分离数据库,将文件复制或移动到您的网络主机,然后重新连接。

    使用 SQL Server 引擎在 ASP.NET 的 App_Data 文件夹中附加 MDF/LDF 文件

    应该有几个例子来说明如何做到这一点。它将数据库视为文件,但确实需要在 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> 
    

    【讨论】:

    • 不确定备份和恢复/复制/移动的东西是否适用于许多虚拟主机。您是说 VS2008 的“data dude”版本具有移动数据的能力吗?不仅仅是 DDL?
    • “Data Dude”有很多可用于开发和部署数据库的功能。它支持数据生成、模式比较/同步、测试夹具。此外,您还可以使用易于理解的 CREATE TABLE 语法/脚本来定义数据库结构。模式比较功能将生成从模式的一个版本移动到另一个版本所需的所有更改脚本。当我看到演示时,我个人被震撼了。也很容易将其放入源代码控制中。 MS 在这个工具上做得很好。
    • +1 应该需要更多时间来学习这个“差异化”的数据库内容。我知道我会为此受到抨击......但是:大多数时候我在本地开发,直到产品完成 98%。然后我上线并从那里进行更改。现在我只在我的个人爱好项目上这样做。在我的实际工作中,一切都在网络内部,我所有的网站都是基于 Intranet 的。
    【解决方案4】:

    TheTXI 的解决方案很好。进行备份和恢复也可以,有时(取决于 ISP/主机对 MS SQL 的锁定)是唯一的选择。

    【讨论】:

      【解决方案5】:

      您还可以选择提供 myLittleBackup (www.mylittlebackup.com) 等工具的共享托管公司,以便您可以轻松地在共享服务器上安装/恢复您的数据库。

      【讨论】:

      • 这样的工具可以在一个可笑的锁定防火墙后面的本地数据库上工作吗?
      • myLittleBackup 是由虚拟主机公司安装和提供的,这意味着没有防火墙问题。安装和配置后,客户只需使用 myLittleBackup 界面上传其数据库的备份,然后单击恢复按钮。然后 myLittleBackup 会自动完成所有棘手的事情,例如用户映射、大小限制检查等......
      猜你喜欢
      • 2010-11-24
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      相关资源
      最近更新 更多