如何上传一个.SQL文件到远程主机并且执行它来部署一个SQL数据库(2)

作者:Scott Guthrie 来源:Scott Guthrie博客中文版 时间:2007-09-23 13:03:00 

不通过使用管理工具把SQL数据库部署到远程SQL服务器的步骤

下面是把一个本地数据库不通过使用任何管理工具就部署到远程主机上去的步骤:

第一步:生成一个包含数据定义和数据的 .SQL文件

远程部署数据库到主机环境的第一步是生成一个 .SQL 文件,内含你数据库的数据定义和数据。按我的 第一个关于数据库发布的博客帖子 (英文)里的步骤,来了解如何为 SQL Express 或 SQL Server数据库生成一个 .SQL 文件。

第二步: 把 .SQL 文件FTP到你的远程主机上去

生成 .SQL 文件之后,使用FTP或者其他文件传输机制将它上传到你的远程主机上去。最好是把这个文件拷贝到一个远程用户不易访问的受保护的场所。一个建议,给这个文件一个随机的名字,然后将它上传到 /app_data 文件夹,因为在默认情形下,该文件里的内容是受保护的。

用FTP来上传这个文件的好处是,它不会强迫你限制 .SQL 文件的大小。有必要的话,该文件的大小可达几百个M字节之多。

第三步: 下载 RunSQL.aspx 辅助页面

访问这个页面,下载其上连接的 RunSQL.aspx 文件。

RunSQL.aspx文件是个ASP.NET页面,是SQL Server产品组编写的,支持2个参数: 1) .SQL 文件的名字, 以及 2) 数据库的连接字符串。运行RunSQL.aspx页面,它会打开指定的 .SQL 文件,在通过连接字符串指定的数据库中迭代执行文件中的每一句SQL语句。这就会把 .SQL 文件中定义的数据库配备到远程的目标数据库中去。

第四步: 编辑 RunSQL.aspx 辅助页面

在本地打开/编辑RunSQL.aspx文件,设置好你的 .SQL 文件名字,以及提供与你的主机供应商给予你的SQL数据库对应的连接字符串:

把 <<YOUR_SCRIPTFILE>> 标记以及相关的连接字符串标记替换成你主机环境中的正确配置值。注意,除非你知道你的 .SQL 文件的完整路径,你大概需要使用ASP.NET中的Server.MapPath(fileName)方法来推算出你应用中与 .SQL 文件的相对路径相对应的绝对路径。譬如:

    // Filename of the T-SQL file you want to run
    string fileName = Server.MapPath("personal.SQL");    
    
    // Connection string to the server you want to execute against
    string connectionString = @"Server=server123;User ID=user123;Password=password123;Initial Catalog=MyDBName123";  
    
    // Timeout of batches (in seconds)
    int timeout = 600;


第五步: 把 RunSQL.aspx 辅助页面上传到你的远程主机

完成更改文件名和连接字符串值之后,把RunSQL.aspx文件上传到你的远程主机上去(譬如,使用FTP)。

为安全的原因,我建议你在上传时给该文件一个随机的文件名,这样,别人就不容易找到这个文件并执行它了。

第六步: 用浏览器访问 RunSQL.aspx 辅助页面

上传后,通过浏览器访问远程的RunSQL.aspx网页,这会导致你远程服务器上的网页分析 .SQL 文件,执行其中的所有SQL语句。 因为 .SQL 文件包含了重建数据库所需的数据库数据定义和数据填充的所有语句,网页执行完毕后,你就将一个一模一样的数据库部署到你的远程主机上了:

第七步: 删除 RunSQL.aspx 和 .SQL 文件

运行完你的 .SQL 脚本之后,把RunSQL.aspx网页和 .SQL 文件同时从你的远程主机服务器上删除。

为安全的原因,你想要任何其他人能够远程访问RunSQL.aspx网页,因为它也许会重建你的数据库,导致数据丢失。

第八步: 更新你应用的Web.Config文件来指向主机环境中的数据库

剩下的最后一步是更新你的web.config文件的 <connectionStrings> 部分指向你的远程主机数据库的连接字符串值。之后,你的应用就应该在远程主机上正常工作了。

希望本文对你有所帮助,

Scott

标签:上传,sql,远程
0
投稿

猜你喜欢

  • SQLite数据库管理相关命令的使用介绍

    2024-01-27 12:41:00
  • python3实现简单飞机大战

    2022-11-11 02:27:18
  • 利用CSS属性实现进度条的方式

    2010-02-25 12:31:00
  • 生成Jupyter Lab快捷方式的小技巧

    2022-11-29 11:55:42
  • python机器学习理论与实战(四)逻辑回归

    2021-07-19 21:05:12
  • 简单了解python 生成器 列表推导式 生成器表达式

    2023-12-05 09:21:02
  • python控制台显示时钟的示例

    2023-10-23 12:04:24
  • 基于Python的图像阈值化分割(迭代法)

    2022-10-23 21:25:01
  • 利用MySQL主从配置实现读写分离减轻数据库压力

    2024-01-18 10:35:07
  • python中的字符串占位符的"{0:2}"

    2021-04-28 20:23:39
  • mysql怎么设置最大连接数详解

    2024-01-24 04:44:55
  • Python3爬虫中Ajax的用法

    2023-02-17 15:09:15
  • python实现地牢迷宫生成的完整步骤

    2021-07-26 19:27:56
  • Python实现将不规范的英文名字首字母大写

    2021-05-21 08:40:46
  • 5个充满想象力的Web调色板

    2008-08-02 12:55:00
  • 如何批量消除网页超级链接上的“虚线框”

    2008-10-15 12:55:00
  • ASP网站程序自动升级实现的方法

    2008-10-15 14:28:00
  • Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码

    2021-04-30 21:32:11
  • MySQL使用IF函数动态执行where条件的方法

    2024-01-25 02:46:34
  • JavaScript数组合并的8种常见方法小结

    2024-04-16 09:32:55
  • asp之家 网络编程 m.aspxhome.com