
下面简单介绍一下如何在工程中添加Microsoft SQL Server Desktop Engine (MSDE)的自动安装合并模块MSM 首先你需要下载MSDE 的sp 安装包 可以从下面的链接去下载 URL 下载完成 你可以安装或者用ZIP解压到本地硬盘 将可以看到 Msi MSM Setup这 个目录和setup等文件 其中的MSM文件夹中的东东就是本文要介绍的MSDE 合并模块 在你的工程中添加一个安装工程(假设为MySetup 路径为c \MySetup ) 按照正常的步骤添加工程输出(Project Output) 选择输出文件(primary output)和内容文件(content files)两项 添加合并模块(Merge Moudle) 选择浏览 指定到你的MSDE的MSM文件夹 选则MSM和m \ 下的所有的文件(REPL MSM REPL_RES MSM DMO_RES MSM和DMO MSM可以不选) 打开 设置安装工程的属性(Properties)中的SearchPath 指定为你的MSM所在路径(这时需要添加两个 path\MSM和path\MSM\ ) 设置关于安装程序的其他属性咱们暂且不提 这是可以对你的安装工程进行编译了 当编译通过后 你可以在c \MySetup \Debug\看到你的打包工程MySetup msi 这是工程打包告一段落 下面我们需要修改打好的安装包 使它可以在安装完程序后自动安装MSDE的一个实例(假设实例名为 MyServer) 现在我们需要用到MS的一个工具ORCA 下载地址 x?scid=kb EN US 安装了orca后就可以利用这个工具对我们的MySetup msi进行修改了 用ORCA打开安装包文件MySetup msi 找到Property这个table ADD Row 在Propetry中填入SqlInstanceName value中填入实例名MyServer 其他的参数请参见 ?id= 和x?scid=kb en us 所有的参数中有关密码的属性 我没有成功 就是SqlSaPwd 这个参数是和SqlSecurityMode一起使用的 但是我一直没有设置成功 密码总是为空的 不知何故! 选择InstallExecuteSequence这个table 找到SetPropSQLMSDEInstalled这个Action 修改 为 找到RemoveExistingProducts 修改 为 保存 退出!这时 在没有SQL环境的机器上运行你的安装包 在程序安装完后 会自动安装MSDE的MyServer实例 并在重起机器后 自动启动Sql Server的实例 前一篇中介绍了如何连同Sql Server的桌面版本一同打包到安装程序的简单步骤 这里还想就自己对于 发布程序到已经有SQL环境的计算机时 自动使用SQL的Osql来恢复指定的数据库到你的SQL Server的Date中 首先 在c \创建一个临时目录 例如c \TempBD 拷贝Osql exe到目录下 拷贝你的数据库备份(TruckDB)到目录下 在目录下分别创建Restore bat和Restore txt文件 内容如下 Restore bat文件内容 osql E S i C \TempDB\Restore txt Restore txt文件内容 use masterif exists (select from sysdevices where name= TruckDB )EXEC sp_dropdevice TruckDB ElseEXEC sp_addumpdevice disk TruckDB C \Program Files\Microsoft SQL Server\MSSQL\Data\TruckDB mdf restore database TruckDBfrom disk= c \TempDB\TruckDB with replace其次 在你的工程中添加一个Installer Class 选中Project主工程 添加Installer Class 名称假定为installer 选择instller 的代码页 添加下面的代码 Public Overrides Sub Install(ByVal stateSaver As System Collections IDictionary) 重写install方法Dim file As System IO FileIf file Exists( C \Program Files\Microsoft SQL Server\MSSQL\Data\TruckDB_data mdf ) = True Then Exit SubMyBase Install(stateSaver)Dim CheckedDir As System IO DirectoryIf CheckedDir Exists( C \Program Files\Microsoft SQL Server\MSSQL\Data ) = False ThenCheckedDir CreateDirectory( C \Program Files\Microsoft SQL Server\MSSQL\Data )End IfDim FullPath As StringDim A As System Reflection Assembly = System Reflection Assembly GetExecutingAssembly()Dim strConfigLoc As StringstrConfigLoc = A LocationDim file As System IO FileIf file Exists( C \Program Files\Microsoft SQL Server\MSSQL\Data\TruckDB_data mdf ) = True Then Exit SubMyBase Install(stateSaver)Dim CheckedDir As System IO DirectoryIf CheckedDir Exists( C \Program Files\Microsoft SQL Server\MSSQL\Data ) = False ThenCheckedDir CreateDirectory( C \Program Files\Microsoft SQL Server\MSSQL\Data )End IfDim FullPath As StringDim A As System Reflection Assembly = System Reflection Assembly GetExecutingAssembly()Dim strConfigLoc As StringstrConfigLoc = A LocationDim strTemp As StringstrTemp = strConfigLoc 提取安装路径strTemp = strTemp Remove(strTemp LastIndexOf( \ ) Len(strTemp) strTemp LastIndexOf( \ )) Copy DateBase to puter If CreatDIR(strTemp) = False Then 失败 反安装Me Uninstall(stateSaver)Exit SubElseEnd IfIf InstallDB(strTemp) = False Then 失败 反安装Me Uninstall(stateSaver)Exit SubElseEnd If 删除数据库临时文件DeleteDIR( c \TempDB )DeleteDIR(strTemp + \TempDB )End SubPublic Overrides Sub Uninstall(ByVal stateSaver As System Collections Idictionary) 执行反安装 利用反射提取安装路径MyBase Uninstall(stateSaver)Dim A As System Reflection Assembly = System Reflection Assembly GetExecutingAssembly()Dim strConfigLoc As StringstrConfigLoc = A LocationDim strTemp As StringstrTemp = strConfigLocstrTemp = strTemp Remove(strTemp LastIndexOf( \ ) Len(strTemp) – strTemp LastIndexOf( \ )) 删除数据库文件和临时文件DeleteDIR(strTemp + \TempDB )DeleteDIR( c \TempDB )End SubPrivate Function DeleteDIR(ByVal path As String) As Boolean 删除指定的文件夹Dim dir As System IO DirectoryIf dir Exists(path) = True Then dir Delete(path True)End FunctionPrivate Function CreatDIR(ByVal path As String) As Boolean 创建指定的文件夹Dim Files As System IO FileDim Dirs As System IO DirectoryTryIf Dirs Exists( c \TempDB ) = False Then Dirs CreateDirectory( c \TempDB ) copy Creat DB filesCopyFile(path + \TempDB C \TempDB )Return TrueCatchReturn FalseEnd TryEnd FunctionPrivate Sub CopyFile(ByVal SourceDirName As String ByVal DestDirName As String) copy指定的文件夹的所有文件到目标文件夹(单层) Dim dir As System IO DirectoryDim File As System IO FileDim sPath oPath As StringDim I As IntegerFor I = To dir GetFiles(SourceDirName) Length – sPath = dir GetFiles(SourceDirName) GetValue(i) ToStringoPath = Microsoft VisualBasic Right(sPath Len(sPath) – Len(SourceDirName))File Copy(sPath DestDirName + oPath True)NextEnd SubPrivate Function InstallDB(ByVal path As String) As Boolean 安装数据库 调用自动批处理 Dim CheckedDir As System IO Director lishixinzhi/Article/program/SQLServer/201311/11234
sql server 2008 功能特色
1、新的FORCESCAN查询提示
任何DBA在进行查询优化的时候,都知道scan和seek之间的区别。Scan是指读取表中每一行数据然后返回查询;而seek使用表的叶数据来找到能够回答相同查询的行。当查询结果仅涉及到表数据的10-15%时,通常使用seek方式会比较好,当涉及到大量数据时则使用scan,它会读取整个表然后送到内存中然后返回结果,无需分析索引。
①新的FORCESCAN提示功能就和字面上的意思一样,可以确保查询优化器在给定的 *** 作中不使用seek,而强制使用scan。需要提醒的是,FORCESCAN需要谨慎使用,否则会造成查询性能降低的后果。
②SELECT user_type FROM user_table WITH (FORCESCAN)
上面的语句假定user_type列相对来说并不是独一无二的,也就是所谓的“低基数”列,这时候使用FORCESCAN就和使用索引没有太大差别。
③随着SQL Server查询优化器变得越来越强大,我在自己的程序中已经很少会用到这种提示功能,但是FORCESCAN还是有它的用武之处。强制表扫描是对系统进行拷问测试的一种方法,FORCESCAN在这方面将会发挥积极的作用。
2、FORCESEEK查询提示的新功能
①FORCESEEK和FORCESCAN二者是截然相反的,它会强制数据库使用seek。在之前的版本中也存在这一功能,但是在SQL Server 2008 R2 SP1中,DBA可以使用FORCESEEK来指定需要seek的索引或者列:
②SELECT user_name FROM user_table
③WITH (FORCESEEK(user_table_index(user_name))
④如果你能够想到的,在user_table上有一个索引叫做user_table_index,它将user_name作为其中的一列。这会强制查询优化器使用这个索引和列来进行seek。你还可以seek多个列,但是这需要按照它们在索引中的位置顺序来指明出来。
⑤一个可能的应用场景:你创建了一个系统,其中生成索引后你想要手动进行详细的说明,或者是用存储过程以及内嵌SQL语句来自动生成。
3、新的系统对象
①每当SQL Server有版本更新的时候,都会出现一些新的系统对象,用户每次都将它们挖掘出来然后记录到文档当中。下面就是SQL Server 2008 R2 SP1中一些新的系统对象。
②sysdm_os_volume_stats:当进行查询的时候,这个动态管理函数将返回存储数据库文件的磁盘信息。比如磁盘上还有多少可用空间,这个卷是否支持压缩。
③sysdm_os_windows_info:返回SQL Server运行的 *** 作系统信息(哪个版本的Windows),其中包括了修订级别以及 *** 作系统语言等。
④sysdm_server_registry:返回现安装的SQL Server相关注册信息。
⑤sysdm_server_services:返回SQL Server正在运行的服务状态,包括上次启动时间、服务是否运行在集群实例上等。
4、支持仿真(512e)硬盘
存储市场中目前正涌现出新的硬盘驱动器,其中之一就是使用所谓的“512e”格式的硬盘,仿真硬盘运用磁盘的4K扇区,但是在界面上模拟一个512字节的扇区硬盘。在TechTarget之前关于仿真硬盘对Windows Server影响的报道中,作者已经将该硬盘称为先进格式硬盘,而且它对于提升SQL Server这样应用性能方面有很大的优势。因此,微软在SP1中添加了对仿真硬盘的支持,它可以让Windows Server 2008 R2运行更好。
5、数据层应用组件架构(DAC Fx)
数据库架构管理是让每个DBA头痛的事情,但是SQL Server在这方面提供了不错的帮助。数据层应用组件(DAC)就是这样的一个工具:它让数据层对象(基本上就是数据库中所有的东西)写入和部署变得轻松起来。SP1包括了一个新的DAC Fx和DAC升级向导,这两个工具可以帮助SQL Server现有数据库架构进行升级,而且还支持微软新的云数据库平台SQL Azure。
6、SharePoint PowerPivot磁盘空间控制
①微软PowerPivot数据往往会缓存在SharePoint中,但是DBA还是无法对缓存机制有一个比较直接的控制。SQL Server 2008 R2 SP1可以让DBA控制不活跃数据库在内存中缓存的时间,并对PowerPivot文件进行磁盘清理。如果你的系统中只有少量的PowerPivot数据,而且更改很少,你希望它能够长时间缓存在内存中,那么新的磁盘空间控制功能将会非常有帮助。
②通过syssp_db_increased_partitions存储过程将一个表分成15000个分区。
③syssp_db_increased_partitions存储过程可以使DBA能够针对一个特定的表设定increased_partitions。在之前的SQL Server版本中,DBA最多能够分成1000个分区,而新的SP1中最多则可以达到15000个分区。这是非常大的一个改进。
点击下载:ql server 2008
sql server 2000 功能特色
1、多实例支持能力
sql2000桌面版最多可在单台计算机上同时支持16个数据库服务器实例。
2、Osqlexe
osql实用工具是Microsoft所提供的一种用于临时以交互方式执行Transact-SQL语句或脚本程序的Win32命令行工具。借助这种实用工具,您将可以在一种类似于命令提示行的工作环境中以交互式方式输入Transact-SQL语句。相应语句所生成的结果集也将在命令行窗口中加以显示。
3、复制功能
sql2000桌面版同时支持以发布者及订阅者身份所进行的合并复制 *** 作,从而使您得以在多个站点(某些情况下可能会覆盖数以百计的站点)上同时维护相同数据的多份拷贝。此外,sql2000桌面版还支持其它形式的复制 *** 作,但其只能提供范围有限的功能。例如,MSDE 2000只能在订阅者环境中参与事务化复制和快照复制 *** 作。
4、性能
sql2000桌面版是一种可共享的本地化数据引擎。它拥有一种能够为达到性能优化目的而将最大并行批处理工作负载数量控制在5个以内的可管理并行工作负载控制机制。相关命令与日志记录可对实例进行监控,以避免出现并行执行工作负载数量超过5个的情况,在这种情况下,即便是配置良好的系统,也会产生明显的性能下降。当并行执行的工作负载数量超过5个时,如果再有批处理工作负载被提交上来,并行控制机制将不断减慢系统运行速度。这些工作负载既不会被取消,也不会自己丢失;他们仍将在一种不断下降的性能模式中得到处理。如果您的解决方案必须支持5个以上的并行工作负载,那么,我们强烈建议您移植到SQL Server 2000或SQL Server 2000企业版,以便获得具备更高伸缩能力的最佳优化性能。
5、最大数据库规模
sql2000桌面版最多可为每个数据库提供2 GB存储空间。这一限制条件是以数据库而非服务器为单位的。每台计算机可支持多个sql2000桌面版实例,其中每个实例为数据库所提供的存储空间之和不得超过2 GB。
6、数据转换服务
sql2000桌面版有能力运行数据转换服务(DTS)软件包。然而,由于其并未配备相应的DTS设计器,因此,它将无法设计DTS软件包。
7、远程管理功能
sql2000桌面版同时支持本地管理与远程管理方式。然而,由于相关事务可能在不同服务器之间交替产生,因此,sql2000桌面版将无法在多服务器运行环境中实现远程管理。
点击下载:sql server 2000
SQL Server Desktop Engine,俗称MSSQL的桌面版,它是一个基于 SQL Server 核心技术构建的数据引擎。MSDE 2000 支持单处理器和双处理器,是面向小型应用程序桌面扩展的可靠的存储引擎和查询处理器。MSDE与SQL Server完全兼容,它只支持数据库容量2G,并发用户不超5个,没有图型管理工具,但是免费的 。 SQL Server系列产品具有各种发行版本,用以满足在不同的环境下对处理的数据量、并发用户数和硬件的不同要求。一般来说,MSDE适合在并发用户数小于5 人,数据量低于2GB的情况下使用。当数据量和并发用户数超过上面的配额的时候,SQL Server成为了更好的选择。由于MSDE与SQL Server完全兼容,开发人员可以使用同样的数据访问语言在规模相对较小的MSDE数据库系统和规模较大的SQL Server数据库系统之间实现无缝转换,并且,当所在组织的规模扩大后对数据库系统的功能和性能提出新的需求时,则可以在不修改现有数据库应用程序中的 任何代码的情况下,将它完全移植到基于SQL Server的平台上运行。 MSDE不包含图形界面,是通过命令行管理程序osql来连接的。 MSDE为多个 Microsoft 产品(包括 Microsoft Visual Studio 和 Microsoft Office Developer Edition)的组件提供。它的版本和 SQL Server 版本之间有直接关系。MSDE 10 基于 SQL Server 70;MSDE 2000 基于 SQL Server 2000。虽然是微软的免费数据库,但MSDE不适用大量用户访问。
以上就是关于实现自动安装SQL Server数据库全部的内容,包括:实现自动安装SQL Server数据库、sql server 2008和2000有什么区别、SQL server desktop engine是干嘛的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)