为啥即使在添加程序集“Microsoft.SqlServer.ConnectionInfo”之后 C# 也无法识别 Server()
Posted
技术标签:
【中文标题】为啥即使在添加程序集“Microsoft.SqlServer.ConnectionInfo”之后 C# 也无法识别 Server()【英文标题】:Why C# does not recognize Server() even after adding assembly "Microsoft.SqlServer.ConnectionInfo"为什么即使在添加程序集“Microsoft.SqlServer.ConnectionInfo”之后 C# 也无法识别 Server() 【发布时间】:2018-10-11 09:04:59 【问题描述】:找不到类型或命名空间名称“Server”(您是否缺少 using 指令或程序集引用?)
string connetionString = @"connectionStirng";
SqlConnection conn = new SqlConnection(connetionString);
var server = new Server(new ServerConnection(conn));
添加到顶部
using Microsoft.SqlServer.Management.Common;
仍然报错。 有任何帮助。
已检查:Why i'm getting error for the Microsoft.SqlServer.Server namespace?I can't add Microsoft.SqlServer.Management.Common to my ASP.NET MVC Application
【问题讨论】:
你检查过你项目中的引用吗? "您是否缺少 using 指令或程序集引用?" - 您添加了使用,但您是否还添加了程序集引用? @Han:是的,是的 确保C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll
在您项目的引用中。如果您使用不同的 SQL Server,该文件夹可能会有所不同。我的是 VS 2017 中捆绑的 SQL Express。
那些似乎正在使用来自 Microsoft.SqlServer.Management.Smo
命名空间的 SMO 对象,例如Server
【参考方案1】:
安装这个 nuget 包:
https://www.nuget.org/packages/Microsoft.SqlServer.SqlManagementObjects
然后添加 using 指令:
使用 Microsoft.SqlServer.Management.Smo;
现在您可以创建服务器对象了。
var server = new Server();
安装 SMO
从 SQL Server 2017 SMO 开始分发为 Microsoft.SqlServer.SqlManagementObjects NuGet 包允许用户 使用 SMO 开发应用程序。
这是 SharedManagementObjects.msi 的替代品,它是 以前作为每个版本的 SQL 功能包的一部分发布 SQL Server 的。应更新使用 SMO 的应用程序以使用 NuGet 包,并将负责确保 二进制文件与正在开发的应用程序一起安装。
https://docs.microsoft.com/en-us/sql/relational-databases/server-management-objects-smo/installing-smo?view=sql-server-2017
【讨论】:
它已经添加到引用中并且存在于您指定的文件夹中。仍然出错 无法安装,因为 NuGet 版本需要 2.12,但我可以更新 NuGet,因为 VS 2012。见***.com/questions/27384885/… @SureshKamrushi 我看到了你的截图。你写了new server(...)
。应该是new Server(...)
。 C# 区分大小写。
using
directive,而不是 using
statement。 C# 有两个功能都使用using
关键字。使用一个人的名字来指代另一个人无助于交流。
由于安装了“Microsoft.SqlServer.SqlManagementObjects”而解决。错字是因为我尝试了不同的案例。【参考方案2】:
按照 Han 的建议,请检查程序集引用路径并确保文件在引用的位置。我遇到了类似的问题,这是在开发环境中工作,但在测试服务器上出错。原因是测试服务器上没有安装 SQL Server Management Studio。所以我将所需的程序集从开发机器复制到测试服务器上应用程序的 bin 文件夹中,并且工作正常。
【讨论】:
【参考方案3】:您可以尝试添加对以下内容的引用吗:
Microsoft.SqlServer.dac.dll
如果找不到dll,则需要安装SSDT(Sql Server Data Tools)。
【讨论】:
以上是关于为啥即使在添加程序集“Microsoft.SqlServer.ConnectionInfo”之后 C# 也无法识别 Server()的主要内容,如果未能解决你的问题,请参考以下文章
为啥在尝试添加引用时会看到“无法发出程序集:引用的程序集...没有强名称”?
GAC - 要将程序集添加到 GAC,拖放可以,但复制和粘贴不行?为啥?