2013-12-17 45 views
1

是的,我没加4个dll文件,在发现:Microsoft.SqlServer.Management.Smo无法找到服务器类

C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies 

这是这些:

Microsoft.SqlServer.ConnectionInfo.dll 
Microsoft.SqlServer.Smo.dll 
Microsoft.SqlServer.Management.Sdk.Sfc.dll 
Microsoft.SqlServer.SqlEnum.dll 

而且修改应用程序配置等等它接受的版本的DLL文件有:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
</startup> 

而且从VB.NET进口:

Imports Microsoft.SqlServer.Management.Smo 
Imports Microsoft.SqlServer.Management.Common 

而且程序识别的每一个字,除了服务器:

Dim fileInfo As New FileInfo(fi.FullName) 
Dim script As String = fileInfo.OpenText().ReadToEnd() 
Dim connection As New SqlConnection(sqlConnectionString) 
Dim server As New Server(New ServerConnection(connection)) 
server.ConnectionContext.ExecuteNonQuery(script) 

它说:

'Type Server is not defined' 

因此该计划失败。关于发生了什么的任何想法?我很确定一个相同的场景正在另一台计算机上测试项目,我不知道为什么这不起作用。谢谢。

UPDATE:

我试图从有这个计划工作到这里的计算机带来的dll文件,并包含Smo的服务器,所以没有什么错误。但是当我构建这个程序时,它就像是在运行时或更新过程中更改了dll,因为Server突然再次被标记为错误,并且Smo不再包含它,为什么会发生这种情况?

+0

你只是想从一个文件执行脚本? – christiandev

+0

是的,非常。 – user1676874

+0

执行脚本时SMO是矫枉过正的。使用ADO.NET –

回答

1

不幸的是,SMO不是可以通过复制DLL来部署的东西。我们在我们的应用程序中(包括RMO和其他应用程序)都有这个功能,并且将其部署到生产中是一种正确的方式。它需要运行适当的MS安装程序。

你可以从这里得到他们: http://www.microsoft.com/en-us/download/details.aspx?id=16978

或者,64位安装: http://go.microsoft.com/fwlink/?LinkID=188439&clcid=0x409

+0

为什么你说这是一种痛苦? – user1676874

+0

这是一个部署的痛苦,因为我们不能简单地打包我们的安装程序并包含DLL。它甚至不像打包微软安装程序那么简单。很多sql组件安装程序都依赖于目标OS和CPU体系结构 - SMO有三个版本,一个用于x86,一个用于x64,另一个用于ia64。另外还需要大量的安装程序。它使产品部署变得混乱,而且是痛苦。 如果我在这里不够清楚,SMO将无法复制应用程序使用的SMO DLL。您需要运行SQL管理对象安装程序。我无法发布直接链接 – 2013-12-18 01:28:32

+0

好的,如果我想部署此程序,我将不得不确保每个用户都安装了SQL管理对象?这看起来像是一个问题。我不知道SMO是如此麻烦。它被卖给了我,因为它让事情变得更容易,猜测他们错了。 – user1676874

相关问题