很多数据库都提供提供数据库定义和数据导入功能,但不幸的是SQL Server却没有,导出成SQL语句只会到处数据库对象的定义,并不包含数据,为了达到导出数据的功能,我们通常只能通过数据库附加或者备份的功能实现,而无法像MySQL那样利用一个SQL语句就能完成数据库的定义和数据导入。
 
好了, SQL Server现在也提供了这种功能了,它用到了一个软件数据库发布向导(Database Publishing Wizard),它可以免费获取,该向导支持2种数据库主机部署场景:
 
1) 数据库发布向导允许你指向一个你正在本机上操作的数据库,然后自动生成一个.SQL脚本文件,该文件包含了在任何远程系统上重建一个当前数据库的完整拷贝所需的安装逻辑。这个.SQL脚本包括了需要创建数据库定义(表,视图,存储过程,触发器,全文索引目录,角色,规则等等,可在此处参考所有细节),以及把与你本地数据库同样的数据内容填充到新数据库里去的所有的东西(这类似于MySQL 的dump工具)。把这些安装逻辑封装在单个.SQL 文件的好处是,大多数主机供应商已经支持上传 .SQL 文件到他们的主机环境,并且通过他们的管理控制面板运行这些脚本的能力。假定你现有一个支持这个功能的web主机供应商,你可以马上开始使用数据库发布向导来轻松地部署你的网站,而不需要主机供应商安装或配置什么东西。
 
2) 数据库发布向导也允许你指向一个你正在本机上操作的数据库,然后使用 web service 向你的远程主机环境迁移和重建数据库(而不用创建一个.SQL 文件或者使用主机供应商的管理控制面板运行这个文件)。不过,这个发布选项需要主机环境提供SQL发布web-service。 SQL Server Hosting Toolkit包含了一个免费的SQL发布web-service实现,我们将与主机供应商密切合作来部署这个web-service。
 
数据库发布向导允许你在本地使用 SQL Express 或 SQL Server 2000/2005 ,然后在远程主机环境中使用SQL 2000 或 SQL 2005。它不要求SQL服务器的版本是一样的,所以,你可以在本地使用SQL Express 2005,然后上传到主机环境中的SQL 2000服务器,而不用改动任何编码。
 
数据库发布向导也支持对内置的ASP.NET 2.0成员,角色管理,用户信息和健康监测等数据定义的处理。许多人遇上问题,因为随 ASP.NET一起发布的来建立这些数据定义的内置.SQL 脚本在安装时(install-time)需要DBO权限,但很多主机供应商对此并不支持(注:脚本在运行时(runtime)不需要DBO权限,只是在安装时(install time)才需要,但这有时会是个障碍,除非主机供应商愿意为你安装)。而在另一方面,数据库发布向导在安装ASP.NET 2.0成员,角色管理,用户信息等数据定义和数据时,并不需要DBO权限,应该允许你,和使用数据库发布向导部署其他数据库一样,轻松地部署 ASPNETDB数据表和存储过程。

下面我来演示一下如何将数据库的定义和数据导出成.SQL文件:
首先运行软件,如下图:
 
再设置数据库连接的有关属性,如下图(有几种方式,具体怎么填写根据你的需求来填写):
 
第三步,选择数据库,如下图:
 
第四步:选择发布方式,你可以选择远程数据库,也可以选择存为.sql文件,这里我就选择存为sql文件了,如下图:
 
第五步,发布选项确认和更改,如下图:
 
第六步:检查摘要
 
第七步:执行生成过程,如下图:
 
如果执行完成,你就可以看到如下画面:
 
那么恭喜你,导出成功了,可以看看生成的SQL文件,如下图:
 
从上图我们可以看到包含数据的sql文件到处成功了!大功告成!
最后需要说明的,如果你不是使用VS2005、没有安装SQL Server2005你可能还需要安装其它组件:
Microsoft SQL Server Native Client  下载地址:
http://download.microsoft.com/download/a/c/3/ac37a75a-1e0b-49ba-aea1-0f9b258e4965/sqlncli.msi
 
Microsoft SQL Server 2005 Management Objects Collection 下载地址:http://download.microsoft.com/download/f/7/4/f74cbdb1-87e2-4794-9186-e3ad6bd54b41/SQLServer2005_XMO.msi