为什么我无法使用 SMO 连接到 SQL 服务器?

Why can I not connect to SQL Server using SMO?

我有一个使用 SQL 服务器管理对象 (SMO) 的应用程序,它似乎无法连接到数据库服务器,错误编号为 26:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

然而,这似乎是唯一无法连接到数据库的东西。使用以下所有内容连接到数据库都没有问题:

这是我正在使用的代码,当我尝试访问数据库时抛出异常,据我所知,所有值都是它们应该的值:

Server = new SMO.Server(
    new ServerConnection(
        new SqlConnectionStringBuilder
        {
            DataSource = ServerName,
            InitialCatalog = DatabaseName,
            IntegratedSecurity = true
        }.ConnectionString));

Database = Server.Databases[DatabaseName];

我唯一注意到的是,当我 运行 sqlcmd -L none 我的 SQL 服务器实例出现时。我基本上希望看到这样的东西:

Servers:
    SQL2008
    SQL2012
    SQL2014
    SQL2016

但它只说:

Servers:
        ;UID:Login ID=?;PWD:Password=?;Trusted_Connection:Use Integrated Security=?;*APP:AppName=?;*WSID:WorkStation ID=?;

已解决,只是忘记 RTFM 和习惯的力量的另一个案例。

基本上,我忘记了构造函数 Server(string) 采用实例名称而不是连接字符串。所以它试图连接到一个与我的连接字符串同名的实例。

还有另一个构造函数 Server(ServerConnection) 所以我应该做的是:

Server = new SMO.Server(
    new ServerConnection(
        new SqlConnectionStringBuilder
        {
            DataSource = ServerName,
            InitialCatalog = DatabaseName,
            IntegratedSecurity = true
        }));

或者很简单,这个:

Server = new SMO.Server(ServerName);