问题:
当安装的软件依赖Microsoft SQL Server 2014 Management Objects时,会把这个组件打进安装包里,但是在服务器上安装时却报如下错误:
“Error Writing to file: Microsoft.SqlServer.XEvent.Linq.dll. Verify that you have access to that directory.”
环境:
Windows Server 2008 R2、安装支持“SQL Server 2012 / 2014” 的数据库脚本安装包
分析:
从错误信息可以看出,有两个可能的原因:
- 没有权限访问这个文件或文件夹
- 通过Search Everything来查看此文件在哪些目录里,看看当前账户是否有“写”的权限
- 如果都有权限,则可能是需要找的文件并不是在找到的目录里,考虑2的可能性
- 所报错的文件或文件夹不存在,或访问不到
- 访问不到很可能是目录未添加到可访问的环境变量里
- 不存在很可能是缺少安装的软件,通过对比“可安装的服务器”与“问题服务器”,最终发现,“可安装服务器”安装了.net framework 4.5,其实.net framework 4.0开始就包含这个dll了,所以只要安装.net framework 4.0就可以
解决方案:
在当前机器上首先安装.net framework 4.0(或更高的版本), 重启后再安装此数据库脚本安装包,就能正确安装成功了。Windows Server 2008 R2 默认带的.net framework版本是3.5
"Microsoft SQL Server 2008/2012/2014 Management Objects" 介绍
SqlServer (version) Management Objects 简称SMO,安装SQL Server数据库时会自动带上这个模块,主要功能由C:/Program Files/Microsoft SQL Server/90/SDK/Assemblies/Microsoft.SqlServer.Smo.dll文件中的相关对象来实现,可以被用来开发SQL Server数据库操作的产品。只要SQL Server Management Studio(图形化管理数据库的工具)能实现的东西,用smo都能实现,因为SQL Server Management Studio就是用smo开发的。如果你有足够的实力,完全可以开发一个可以藐视SQL Server Management Studio的工具,比如加入智能感知的功能。
当打包数据库脚本安装包时需要打包此组件的原因是:此数据库脚本安装包(.exe)有可能是在一台没有安装SQL Server数据库软件的机器上,这个组件用来支持通过输入数据库Server的IP地址、用户名、密码达到在本机执行SQL脚本到目标数据库的目的。