我有一个使用SQL Server管理对象(SMO)的应用程序似乎无法连接到数据库服务器,错误是26号:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)
然而,这似乎是唯一无法连接到数据库的东西。使用以下所有内容连接到数据库可以顺利运行:
System.Data.SqlClient.SqlConnection
这是我正在使用的代码,当我尝试访问数据库时抛出异常,据我所知,所有值都是它们应该是:
Server = new SMO.Server(
new ServerConnection(
new SqlConnectionStringBuilder
{
DataSource = ServerName,
InitialCatalog = DatabaseName,
IntegratedSecurity = true
}.ConnectionString));
Database = Server.Databases[DatabaseName];
我唯一注意到的是,当我运行sqlcmd -L
时,我的SQL Server实例都没有显示出来。我基本上希望看到这样的事情:
Servers:
SQL2008
SQL2012
SQL2014
SQL2016
但它只是说:
Servers:
;UID:Login ID=?;PWD:Password=?;Trusted_Connection:Use Integrated Security=?;*APP:AppName=?;*WSID:WorkStation ID=?;
答案 0 :(得分:0)
解决了,只是忘记了RTFM和习惯的另一种情况。
基本上,我忘记了构造函数Server(string)
采用实例名称而不是连接字符串。所以它试图连接到一个与我的连接字符串同名的实例。
还有另一个构造函数Server(ServerConnection)
所以我应该做的就是:
Server = new SMO.Server(
new ServerConnection(
new SqlConnectionStringBuilder
{
DataSource = ServerName,
InitialCatalog = DatabaseName,
IntegratedSecurity = true
}));
或者很简单,这个:
Server = new SMO.Server(ServerName);