如何上传一个.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


猜你喜欢
- 最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, sc
- 正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是计算机科学的一个概念。正则表达式使用单个
- python的annotate函数annotate函数该函数的详细参数可调用内置属性__doc__查看。import matplotlib.
- 本文实例讲述了python基于TCP实现的文件下载器功能。分享给大家供大家参考,具体如下:服务器 参考代码如下:from socket im
- 在ASP中,如何获得ADO的连接信息? 具体方法见下列代码:<%Sub Connecti
- 一、获得给定月份的周日数根据给定的某个日期,计算这个月份的周日的天数。根据系统变量@@DATEFIRST的值,判断周日的序号为【DatePa
- mac用起来还是有很多不方便的地方,app很局限也都不是很好用,mac自带的截图工具,格式是tiff,需要转成jpg才能在代码中使用,利用p
- 前言互斥锁是在并发程序中对共享资源进行访问控制的主要手段。对此 Go 语言提供了简单易用的 Mutex。Mutex 和 Gorou
- 以 s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}为例0. 建议:做slice截取时建议用两个参数,尤其是
- easy_thumbnails:A powerful, yet easy to implement thumbnailing applica
- 下载编译器protoc两种方式:1、使用google官方protoc下载地址:https://github.com/google/proto
- 以下代码涉及 Vue 2.0 及 ES6 语法。目标纯 javascrpit 实现,兼容ie9及以上浏览器,在本地做好文件格式、长宽、大小的
- 前言最近在重构一个复选框组件,原型是select2这个jQuery插件, 有兴趣的可以去搜下,封装的很好,但是并不能满足业务所有需求,最要命
- 本文实例讲述了php计算给定日期所在周的开始日期和结束日期。分享给大家供大家参考,具体如下:<?php/** * 取得给定日期所在周的
- 将一个CSV格式的文件分割成两个CSV文件本项目可以按照比例将一个csv文件分割成两个csv文件,效果是:在C:\algo_file文件夹下
- 前言: 在刚解决jupyter notebook打不开网页的问题后,我迫不及待地写了P
- 有了db模块,操作数据库直接写SQL就很方便。但是,我们还缺少ORM。如果有了ORM,就可以用类似这样的语句获取User对象:user =
- 本次爬虫用到的网址是:http://www.netbian.com/index.htm: 彼岸桌面.里面有很多的好看壁纸,而且都是可以下载高
- 背景接口域名没有写死,而是动态获取。具体实现就是 通过读取一个静态json文件,来设置真实的接口域名。好处是原域名有可能被封,这样可以直接后
- 问题来源jupyter notebook在命令行中启动之后,默认根目录为命令行的当前目录,这样便利性较差。下面给出了三种指定启动目录的方法,